@mneme-ai/core 2.19.25 → 2.19.27
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.js +1 -1
- package/dist/cosmic/aurelian_v1925.test.js.map +1 -1
- 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/cosmic/aurelian_v1927.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v1927.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v1927.test.js +73 -0
- package/dist/cosmic/aurelian_v1927.test.js.map +1 -0
- package/dist/dreamspace_cartographer/dreamspace_cartographer.test.d.ts +2 -0
- package/dist/dreamspace_cartographer/dreamspace_cartographer.test.d.ts.map +1 -0
- package/dist/dreamspace_cartographer/dreamspace_cartographer.test.js +153 -0
- package/dist/dreamspace_cartographer/dreamspace_cartographer.test.js.map +1 -0
- package/dist/dreamspace_cartographer/index.d.ts +110 -0
- package/dist/dreamspace_cartographer/index.d.ts.map +1 -0
- package/dist/dreamspace_cartographer/index.js +175 -0
- package/dist/dreamspace_cartographer/index.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_federate/dreamspace_federate.test.d.ts +2 -0
- package/dist/dreamspace_federate/dreamspace_federate.test.d.ts.map +1 -0
- package/dist/dreamspace_federate/dreamspace_federate.test.js +199 -0
- package/dist/dreamspace_federate/dreamspace_federate.test.js.map +1 -0
- package/dist/dreamspace_federate/index.d.ts +131 -0
- package/dist/dreamspace_federate/index.d.ts.map +1 -0
- package/dist/dreamspace_federate/index.js +209 -0
- package/dist/dreamspace_federate/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/dreamspace_pair/dreamspace_pair.test.d.ts +2 -0
- package/dist/dreamspace_pair/dreamspace_pair.test.d.ts.map +1 -0
- package/dist/dreamspace_pair/dreamspace_pair.test.js +175 -0
- package/dist/dreamspace_pair/dreamspace_pair.test.js.map +1 -0
- package/dist/dreamspace_pair/index.d.ts +99 -0
- package/dist/dreamspace_pair/index.d.ts.map +1 -0
- package/dist/dreamspace_pair/index.js +161 -0
- package/dist/dreamspace_pair/index.js.map +1 -0
- package/dist/dreamspace_probe/dreamspace_probe.test.d.ts +2 -0
- package/dist/dreamspace_probe/dreamspace_probe.test.d.ts.map +1 -0
- package/dist/dreamspace_probe/dreamspace_probe.test.js +179 -0
- package/dist/dreamspace_probe/dreamspace_probe.test.js.map +1 -0
- package/dist/dreamspace_probe/index.d.ts +125 -0
- package/dist/dreamspace_probe/index.d.ts.map +1 -0
- package/dist/dreamspace_probe/index.js +226 -0
- package/dist/dreamspace_probe/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- 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 +37 -0
- package/dist/wrapper_genesis/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.27 — MNEME DREAMSPACE · CARTOGRAPHER (stage 2 of 6)
|
|
3
|
+
*
|
|
4
|
+
* "build map: tool X handles input pattern Y with quality Z, store
|
|
5
|
+
* ใน PROPRIOCEPTION → REFLEX query proprioception ตอน predict-
|
|
6
|
+
* next-tool → 90/100 stuck features เริ่มถูก trigger ตามที่จริง"
|
|
7
|
+
* — user audit, 2026-05-17
|
|
8
|
+
*
|
|
9
|
+
* Diagnosis: PROBE measures per-tool fitness; CARTOGRAPHER aggregates
|
|
10
|
+
* ACROSS many probe reports into a queryable capability map. REFLEX
|
|
11
|
+
* then asks "which tool best handles this input pattern?" and gets
|
|
12
|
+
* evidence-backed answer instead of frequency guess.
|
|
13
|
+
*
|
|
14
|
+
* The map is a 2D index:
|
|
15
|
+
* pattern_signature → tool_name → quality_score
|
|
16
|
+
* Pattern signature is a content-addressed hash of the input shape
|
|
17
|
+
* (kind + sorted key list). Stable across probe runs; case-insensitive.
|
|
18
|
+
*
|
|
19
|
+
* Composes onto:
|
|
20
|
+
* - v2.19.27 PROBE (consumes ToolProbeReport.runs)
|
|
21
|
+
* - v2.19.23 PROPRIOCEPTION (unified catalog; caller stores map here)
|
|
22
|
+
* - v2.19.22 REFLEX (queries map at predict-next-tool time)
|
|
23
|
+
* - v2.19.26 GESTATION (gaps in map = signal for proposeToolSpec)
|
|
24
|
+
*
|
|
25
|
+
* Honest scope:
|
|
26
|
+
* - PURE FUNCTION builder. Caller persists the CapabilityMap to disk.
|
|
27
|
+
* - Pattern signature is conservative (kind + sorted key names); we
|
|
28
|
+
* don't try to infer semantic intent — that's PROPRIOCEPTION's job.
|
|
29
|
+
* - HMAC-signed map so federation can ship verified capability maps.
|
|
30
|
+
*/
|
|
31
|
+
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
32
|
+
const PROTOCOL_VERSION = 1;
|
|
33
|
+
const DEFAULT_BLEND_WEIGHT = 0.3;
|
|
34
|
+
function canon(v) {
|
|
35
|
+
if (v === null || typeof v !== "object")
|
|
36
|
+
return JSON.stringify(v);
|
|
37
|
+
if (Array.isArray(v))
|
|
38
|
+
return "[" + v.map(canon).join(",") + "]";
|
|
39
|
+
const keys = Object.keys(v).sort();
|
|
40
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
|
|
41
|
+
}
|
|
42
|
+
function defaultSecret() {
|
|
43
|
+
return process.env["MNEME_DREAMSPACE_CARTOGRAPHER_SECRET"] || `mneme-dreamspace-cartographer-v${PROTOCOL_VERSION}`;
|
|
44
|
+
}
|
|
45
|
+
function hmacHex(body, secret) {
|
|
46
|
+
return createHmac("sha256", secret).update(canon(body)).digest("hex");
|
|
47
|
+
}
|
|
48
|
+
function safeEqHex(a, b) {
|
|
49
|
+
try {
|
|
50
|
+
return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Pattern signature from input args: kind discriminator + sorted key list.
|
|
58
|
+
* { name: "x", count: 3 } → "obj:count,name"
|
|
59
|
+
* [] → "arr:empty"
|
|
60
|
+
* "hello" → "str:len5"
|
|
61
|
+
* 42 → "num"
|
|
62
|
+
* null → "null"
|
|
63
|
+
* Stable; case-insensitive; never reveals user data.
|
|
64
|
+
*/
|
|
65
|
+
export function patternSignature(args) {
|
|
66
|
+
if (args === null)
|
|
67
|
+
return "null";
|
|
68
|
+
if (args === undefined)
|
|
69
|
+
return "undef";
|
|
70
|
+
if (Array.isArray(args))
|
|
71
|
+
return args.length === 0 ? "arr:empty" : `arr:len${args.length < 5 ? "small" : args.length < 50 ? "med" : "large"}`;
|
|
72
|
+
if (typeof args === "object") {
|
|
73
|
+
const keys = Object.keys(args).map((k) => k.toLowerCase()).sort();
|
|
74
|
+
return keys.length === 0 ? "obj:empty" : `obj:${keys.join(",")}`;
|
|
75
|
+
}
|
|
76
|
+
if (typeof args === "string")
|
|
77
|
+
return `str:len${args.length === 0 ? "0" : args.length < 32 ? "small" : "large"}`;
|
|
78
|
+
return typeof args;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Build a fresh CapabilityMap from a list of probe runs.
|
|
82
|
+
*
|
|
83
|
+
* Aggregation: for each (toolName, patternSig) cell, quality is the
|
|
84
|
+
* weighted mean of qualityForThisRun across all probes for that cell.
|
|
85
|
+
* Recent probes weight slightly more than old probes (recency bias
|
|
86
|
+
* controlled by `blendWeight` per new probe).
|
|
87
|
+
*/
|
|
88
|
+
export function buildCapabilityMap(input) {
|
|
89
|
+
const w = input.blendWeight ?? DEFAULT_BLEND_WEIGHT;
|
|
90
|
+
const byCell = new Map();
|
|
91
|
+
// Sort probes chronologically for stable EWMA evolution
|
|
92
|
+
const sorted = [...input.probes].sort((a, b) => a.probedAt - b.probedAt);
|
|
93
|
+
for (const p of sorted) {
|
|
94
|
+
const sig = patternSignature(p.inputArgs);
|
|
95
|
+
const key = `${p.toolName}::${sig}`;
|
|
96
|
+
const prev = byCell.get(key);
|
|
97
|
+
if (prev) {
|
|
98
|
+
// Exponential moving average; defaults to 0.3 new weight (slow drift).
|
|
99
|
+
prev.quality = (1 - w) * prev.quality + w * p.qualityForThisRun;
|
|
100
|
+
prev.sampleCount++;
|
|
101
|
+
prev.lastProbedAt = Math.max(prev.lastProbedAt, p.probedAt);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
byCell.set(key, {
|
|
105
|
+
quality: p.qualityForThisRun,
|
|
106
|
+
sampleCount: 1,
|
|
107
|
+
lastProbedAt: p.probedAt,
|
|
108
|
+
patternLabel: p.inputLabel,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const cells = [];
|
|
113
|
+
for (const [key, acc] of byCell) {
|
|
114
|
+
const [toolName, patternSig] = key.split("::");
|
|
115
|
+
cells.push({
|
|
116
|
+
toolName,
|
|
117
|
+
patternSig,
|
|
118
|
+
patternLabel: acc.patternLabel,
|
|
119
|
+
quality: acc.quality,
|
|
120
|
+
sampleCount: acc.sampleCount,
|
|
121
|
+
lastProbedAt: acc.lastProbedAt,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Stable order: by patternSig asc, then quality desc, then toolName asc
|
|
125
|
+
cells.sort((a, b) => a.patternSig.localeCompare(b.patternSig) ||
|
|
126
|
+
b.quality - a.quality ||
|
|
127
|
+
a.toolName.localeCompare(b.toolName));
|
|
128
|
+
const uniquePatterns = new Set(cells.map((c) => c.patternSig)).size;
|
|
129
|
+
const uniqueTools = new Set(cells.map((c) => c.toolName)).size;
|
|
130
|
+
const body = {
|
|
131
|
+
v: PROTOCOL_VERSION,
|
|
132
|
+
cells,
|
|
133
|
+
totalProbes: input.probes.length,
|
|
134
|
+
uniquePatterns,
|
|
135
|
+
uniqueTools,
|
|
136
|
+
builtAt: input.builtAt ?? Date.now(),
|
|
137
|
+
};
|
|
138
|
+
const sig = hmacHex(body, input.secret ?? defaultSecret());
|
|
139
|
+
return { ...body, sig };
|
|
140
|
+
}
|
|
141
|
+
export function verifyCapabilityMap(m, secret) {
|
|
142
|
+
const { sig, ...body } = m;
|
|
143
|
+
return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Query the map for tools that handle a given input shape. Returns the
|
|
147
|
+
* top-N by quality desc. REFLEX's predict-next-tool path calls this
|
|
148
|
+
* BEFORE falling back to frequency-only prediction.
|
|
149
|
+
*/
|
|
150
|
+
export function queryCapability(input) {
|
|
151
|
+
const sig = patternSignature(input.args);
|
|
152
|
+
const minQ = input.minQuality ?? 0;
|
|
153
|
+
const topN = input.topN ?? 5;
|
|
154
|
+
return input.map.cells
|
|
155
|
+
.filter((c) => c.patternSig === sig && c.quality >= minQ)
|
|
156
|
+
.slice(0, topN);
|
|
157
|
+
}
|
|
158
|
+
export function computeMapStats(m) {
|
|
159
|
+
const total = m.cells.length;
|
|
160
|
+
const meanQuality = total === 0 ? 0 : m.cells.reduce((s, c) => s + c.quality, 0) / total;
|
|
161
|
+
const highQ = m.cells.filter((c) => c.quality >= 0.7).length;
|
|
162
|
+
const single = m.cells.filter((c) => c.sampleCount === 1).length;
|
|
163
|
+
return {
|
|
164
|
+
totalCells: total,
|
|
165
|
+
uniquePatterns: m.uniquePatterns,
|
|
166
|
+
uniqueTools: m.uniqueTools,
|
|
167
|
+
meanQuality,
|
|
168
|
+
highQualityCells: highQ,
|
|
169
|
+
singleProbeCells: single,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
export function formatMapLine(s) {
|
|
173
|
+
return `🗺 CARTOGRAPHER · ${s.totalCells} cells · ${s.uniqueTools} tools × ${s.uniquePatterns} patterns · ${s.highQualityCells} high-Q · meanQ=${s.meanQuality.toFixed(2)}`;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dreamspace_cartographer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreamspace_evolution.test.d.ts","sourceRoot":"","sources":["../../src/dreamspace_evolution/dreamspace_evolution.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { classifyLifecycle, selectMatingPairs, runEvolutionCycle, verifyEvolutionReport, formatEvolutionLine, formatVerdictLine, LIFECYCLE_EMOJI, } from "./index.js";
|
|
3
|
+
const SECRET = "evolution-test-secret-997744";
|
|
4
|
+
const DAY = 86400 * 1000;
|
|
5
|
+
const WEEK = 7 * DAY;
|
|
6
|
+
function record(toolName, bornDaysAgo, useCount, nowMs, lastUseDaysAgo = 0) {
|
|
7
|
+
return {
|
|
8
|
+
toolName,
|
|
9
|
+
bornTs: nowMs - bornDaysAgo * DAY,
|
|
10
|
+
useCount,
|
|
11
|
+
lastUseTs: nowMs - lastUseDaysAgo * DAY,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
describe("v2.19.26 EVOLUTION · classifyLifecycle (4 bands)", () => {
|
|
15
|
+
const NOW = 1_000_000_000;
|
|
16
|
+
it("🥚 GESTATING: age < 7 days regardless of uses", () => {
|
|
17
|
+
const v = classifyLifecycle({ record: record("t", 3, 100, NOW), nowMs: NOW });
|
|
18
|
+
expect(v.band).toBe("gestating");
|
|
19
|
+
expect(v.recommendation).toBe("keep");
|
|
20
|
+
});
|
|
21
|
+
it("🦋 MATURE: age >= 30 days + uses >= 50 → promote", () => {
|
|
22
|
+
const v = classifyLifecycle({ record: record("t", 45, 100, NOW), nowMs: NOW });
|
|
23
|
+
expect(v.band).toBe("mature");
|
|
24
|
+
expect(v.recommendation).toBe("promote");
|
|
25
|
+
});
|
|
26
|
+
it("🍂 ATROPHIED: age >= 30 days + uses-per-week < 1 → sunset", () => {
|
|
27
|
+
const v = classifyLifecycle({ record: record("t", 60, 3, NOW), nowMs: NOW });
|
|
28
|
+
// 60 days = ~8.5 weeks, 3 uses / 8.5 weeks ≈ 0.35 /wk < 1
|
|
29
|
+
expect(v.band).toBe("atrophied");
|
|
30
|
+
expect(v.recommendation).toBe("sunset");
|
|
31
|
+
});
|
|
32
|
+
it("🐣 JUVENILE: age 10 days, uses 6 (above min but below mature threshold)", () => {
|
|
33
|
+
const v = classifyLifecycle({ record: record("t", 10, 6, NOW), nowMs: NOW });
|
|
34
|
+
expect(v.band).toBe("juvenile");
|
|
35
|
+
expect(v.recommendation).toBe("keep");
|
|
36
|
+
});
|
|
37
|
+
it("🐣 JUVENILE: age 10 days, uses 2 (below juvenile min) → still juvenile (probation)", () => {
|
|
38
|
+
const v = classifyLifecycle({ record: record("t", 10, 2, NOW), nowMs: NOW });
|
|
39
|
+
expect(v.band).toBe("juvenile");
|
|
40
|
+
expect(v.recommendation).toBe("keep");
|
|
41
|
+
});
|
|
42
|
+
it("custom config overrides default thresholds", () => {
|
|
43
|
+
const v = classifyLifecycle({
|
|
44
|
+
record: record("t", 5, 100, NOW),
|
|
45
|
+
nowMs: NOW,
|
|
46
|
+
config: { gestatingMaxAgeMs: 1 * DAY, juvenileMaxAgeMs: 3 * DAY, matureMinUses: 50 },
|
|
47
|
+
});
|
|
48
|
+
expect(v.band).toBe("mature");
|
|
49
|
+
});
|
|
50
|
+
it("MEASURED 100% determinism: same input -> same verdict (30 trials)", () => {
|
|
51
|
+
const input = { record: record("t", 15, 25, NOW), nowMs: NOW };
|
|
52
|
+
const first = JSON.stringify(classifyLifecycle(input));
|
|
53
|
+
let allEqual = true;
|
|
54
|
+
for (let i = 0; i < 30; i++) {
|
|
55
|
+
if (JSON.stringify(classifyLifecycle(input)) !== first) {
|
|
56
|
+
allEqual = false;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
expect(allEqual).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe("v2.19.26 EVOLUTION · selectMatingPairs (co-occurrence within window)", () => {
|
|
64
|
+
it("default window 1min; pairs that fire within 1min N times qualify", () => {
|
|
65
|
+
const log = [];
|
|
66
|
+
// 5 (A, B) pairs each within 30s of each other
|
|
67
|
+
for (let i = 0; i < 5; i++) {
|
|
68
|
+
log.push({ toolName: "mneme.A", ts: i * 60_000 });
|
|
69
|
+
log.push({ toolName: "mneme.B", ts: i * 60_000 + 30_000 });
|
|
70
|
+
}
|
|
71
|
+
const pairs = selectMatingPairs({ log });
|
|
72
|
+
const found = pairs.find((p) => p.toolA === "mneme.A" && p.toolB === "mneme.B");
|
|
73
|
+
expect(found).toBeDefined();
|
|
74
|
+
expect(found.coOccurrenceCount).toBeGreaterThanOrEqual(4);
|
|
75
|
+
});
|
|
76
|
+
it("pairs outside window do NOT count", () => {
|
|
77
|
+
const log = [
|
|
78
|
+
{ toolName: "mneme.A", ts: 0 },
|
|
79
|
+
{ toolName: "mneme.B", ts: 5 * 60 * 1000 }, // 5min later, outside default 1min window
|
|
80
|
+
];
|
|
81
|
+
const pairs = selectMatingPairs({ log });
|
|
82
|
+
expect(pairs.length).toBe(0);
|
|
83
|
+
});
|
|
84
|
+
it("self-pairs (A then A) excluded", () => {
|
|
85
|
+
const log = [];
|
|
86
|
+
for (let i = 0; i < 10; i++)
|
|
87
|
+
log.push({ toolName: "mneme.A", ts: i * 10_000 });
|
|
88
|
+
const pairs = selectMatingPairs({ log });
|
|
89
|
+
expect(pairs.filter((p) => p.toolA === p.toolB).length).toBe(0);
|
|
90
|
+
});
|
|
91
|
+
it("ordering: A→B and B→A are DIFFERENT pairs", () => {
|
|
92
|
+
const log = [];
|
|
93
|
+
for (let i = 0; i < 5; i++) {
|
|
94
|
+
log.push({ toolName: "mneme.A", ts: i * 60_000 });
|
|
95
|
+
log.push({ toolName: "mneme.B", ts: i * 60_000 + 10_000 });
|
|
96
|
+
log.push({ toolName: "mneme.A", ts: i * 60_000 + 20_000 });
|
|
97
|
+
}
|
|
98
|
+
const pairs = selectMatingPairs({ log, minCount: 1 });
|
|
99
|
+
const ab = pairs.find((p) => p.toolA === "mneme.A" && p.toolB === "mneme.B");
|
|
100
|
+
const ba = pairs.find((p) => p.toolA === "mneme.B" && p.toolB === "mneme.A");
|
|
101
|
+
expect(ab).toBeDefined();
|
|
102
|
+
expect(ba).toBeDefined();
|
|
103
|
+
});
|
|
104
|
+
it("minCount threshold filters infrequent pairs", () => {
|
|
105
|
+
const log = [
|
|
106
|
+
{ toolName: "mneme.A", ts: 0 }, { toolName: "mneme.B", ts: 1000 },
|
|
107
|
+
{ toolName: "mneme.A", ts: 2000 }, { toolName: "mneme.B", ts: 3000 },
|
|
108
|
+
];
|
|
109
|
+
const strict = selectMatingPairs({ log, minCount: 10 });
|
|
110
|
+
expect(strict.length).toBe(0);
|
|
111
|
+
const loose = selectMatingPairs({ log, minCount: 1 });
|
|
112
|
+
expect(loose.length).toBeGreaterThan(0);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe("v2.19.26 EVOLUTION · runEvolutionCycle (full loop)", () => {
|
|
116
|
+
const NOW = 1_000_000_000;
|
|
117
|
+
it("classifies multiple records + finds mating pairs in one pass", () => {
|
|
118
|
+
const records = [
|
|
119
|
+
record("mneme.A", 1, 0, NOW), // gestating
|
|
120
|
+
record("mneme.B", 45, 100, NOW), // mature
|
|
121
|
+
record("mneme.C", 60, 2, NOW), // atrophied
|
|
122
|
+
];
|
|
123
|
+
const log = [];
|
|
124
|
+
for (let i = 0; i < 6; i++) {
|
|
125
|
+
log.push({ toolName: "mneme.X", ts: i * 60_000 });
|
|
126
|
+
log.push({ toolName: "mneme.Y", ts: i * 60_000 + 20_000 });
|
|
127
|
+
}
|
|
128
|
+
const r = runEvolutionCycle({ records, log, nowMs: NOW, cycleAt: NOW, secret: SECRET });
|
|
129
|
+
expect(r.bandCounts.gestating).toBe(1);
|
|
130
|
+
expect(r.bandCounts.mature).toBe(1);
|
|
131
|
+
expect(r.bandCounts.atrophied).toBe(1);
|
|
132
|
+
expect(r.promoteCount).toBe(1);
|
|
133
|
+
expect(r.sunsetCount).toBe(1);
|
|
134
|
+
expect(r.matingPairs.length).toBeGreaterThan(0);
|
|
135
|
+
});
|
|
136
|
+
it("HMAC verifies untampered; rejects tamper", () => {
|
|
137
|
+
const r = runEvolutionCycle({
|
|
138
|
+
records: [record("t", 1, 0, NOW)],
|
|
139
|
+
log: [],
|
|
140
|
+
nowMs: NOW,
|
|
141
|
+
cycleAt: NOW,
|
|
142
|
+
secret: SECRET,
|
|
143
|
+
});
|
|
144
|
+
expect(verifyEvolutionReport(r, SECRET)).toBe(true);
|
|
145
|
+
expect(verifyEvolutionReport({ ...r, promoteCount: 999 }, SECRET)).toBe(false);
|
|
146
|
+
});
|
|
147
|
+
it("MEASURED 100% determinism: same input -> same report sig (30 trials)", () => {
|
|
148
|
+
const input = {
|
|
149
|
+
records: [record("t", 1, 0, NOW), record("u", 45, 100, NOW)],
|
|
150
|
+
log: [
|
|
151
|
+
{ toolName: "a", ts: 0 }, { toolName: "b", ts: 10_000 },
|
|
152
|
+
{ toolName: "a", ts: 60_000 }, { toolName: "b", ts: 70_000 },
|
|
153
|
+
],
|
|
154
|
+
nowMs: NOW,
|
|
155
|
+
cycleAt: NOW,
|
|
156
|
+
secret: SECRET,
|
|
157
|
+
};
|
|
158
|
+
const first = runEvolutionCycle(input).sig;
|
|
159
|
+
let allEqual = true;
|
|
160
|
+
for (let i = 0; i < 30; i++) {
|
|
161
|
+
if (runEvolutionCycle(input).sig !== first) {
|
|
162
|
+
allEqual = false;
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
expect(allEqual).toBe(true);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe("v2.19.26 EVOLUTION · formatters + constants", () => {
|
|
170
|
+
const NOW = 1_000_000_000;
|
|
171
|
+
it("LIFECYCLE_EMOJI maps each band", () => {
|
|
172
|
+
expect(LIFECYCLE_EMOJI.gestating).toBe("🥚");
|
|
173
|
+
expect(LIFECYCLE_EMOJI.juvenile).toBe("🐣");
|
|
174
|
+
expect(LIFECYCLE_EMOJI.mature).toBe("🦋");
|
|
175
|
+
expect(LIFECYCLE_EMOJI.atrophied).toBe("🍂");
|
|
176
|
+
});
|
|
177
|
+
it("formatEvolutionLine includes all 4 band counts + promote + sunset + pairs", () => {
|
|
178
|
+
const r = runEvolutionCycle({
|
|
179
|
+
records: [record("t", 1, 0, NOW)],
|
|
180
|
+
log: [],
|
|
181
|
+
nowMs: NOW,
|
|
182
|
+
cycleAt: NOW,
|
|
183
|
+
secret: SECRET,
|
|
184
|
+
});
|
|
185
|
+
const line = formatEvolutionLine(r);
|
|
186
|
+
expect(line).toContain("🥚");
|
|
187
|
+
expect(line).toContain("🐣");
|
|
188
|
+
expect(line).toContain("🦋");
|
|
189
|
+
expect(line).toContain("🍂");
|
|
190
|
+
});
|
|
191
|
+
it("formatVerdictLine includes tool + band + age + uses + recommendation", () => {
|
|
192
|
+
const v = classifyLifecycle({ record: record("t", 45, 100, NOW), nowMs: NOW });
|
|
193
|
+
const line = formatVerdictLine(v);
|
|
194
|
+
expect(line).toContain("t");
|
|
195
|
+
expect(line).toContain("mature");
|
|
196
|
+
expect(line).toContain("promote");
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=dreamspace_evolution.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreamspace_evolution.test.js","sourceRoot":"","sources":["../../src/dreamspace_evolution/dreamspace_evolution.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.26 — MNEME DREAMSPACE · EVOLUTION (self-authoring MCP catalog · phase 2 of 2)
|
|
3
|
+
*
|
|
4
|
+
* "ของ 1-6 ทุกตัวมอง dreams เป็น product (ผลิต vaccine / prophecy /
|
|
5
|
+
* paradox / artwork). ของ 7 มอง dreams เป็น factory (ผลิต tools
|
|
6
|
+
* ที่ผลิต product ตลอดไป). Factory > product บนแกน compounding +
|
|
7
|
+
* durability."
|
|
8
|
+
* — user audit, 2026-05-17
|
|
9
|
+
*
|
|
10
|
+
* Diagnosis: GESTATION proposes new tools; EVOLUTION decides which
|
|
11
|
+
* survive. Without lifecycle, the auto-proposed catalog grows
|
|
12
|
+
* unboundedly and becomes its own noise. Without mating, two
|
|
13
|
+
* high-fitness siblings never combine into a stronger third.
|
|
14
|
+
*
|
|
15
|
+
* 4 lifecycle bands (deterministic; pure-function):
|
|
16
|
+
* 🥚 GESTATING — age < 7 days; uses < 5 (newborn)
|
|
17
|
+
* 🐣 JUVENILE — age < 30 days; 5 <= uses < 50 (proving itself)
|
|
18
|
+
* 🦋 MATURE — age >= 30 days; uses >= 50 (promotion candidate)
|
|
19
|
+
* 🍂 ATROPHIED — age > 30 days; uses < 1/week (sunset candidate)
|
|
20
|
+
*
|
|
21
|
+
* Mate selection: scan a use-history log for ordered pairs (tool_A
|
|
22
|
+
* then tool_B) that co-occur >= threshold times. Each qualifying
|
|
23
|
+
* pair becomes a CompositionMatingProposal — caller emits a fresh
|
|
24
|
+
* GestationSignal of kind "pattern_co_occurrence" to v2.19.26
|
|
25
|
+
* GESTATION, which proposes a brand-new chimera. Birth via mating.
|
|
26
|
+
*
|
|
27
|
+
* Composes onto:
|
|
28
|
+
* - v2.19.26 GESTATION (proposed tools have ts; we track them)
|
|
29
|
+
* - v2.19.11 MORTAL (lifecycle bands ≈ generations)
|
|
30
|
+
* - v2.19.9 WRAPPER_GENESPLICING (chimera execute target)
|
|
31
|
+
* - v2.19.14 CONSEQUENCE LEDGER (use-history source)
|
|
32
|
+
* - v2.19.25 SLEEP TRAINING (fitness gradient feeds promotion)
|
|
33
|
+
*
|
|
34
|
+
* Honest scope:
|
|
35
|
+
* - PURE FUNCTION lifecycle classifier + mate selector. Caller
|
|
36
|
+
* persists the use-history log + the lifecycle verdicts.
|
|
37
|
+
* - Lifecycle thresholds are CONFIG (caller can override).
|
|
38
|
+
* - Mating only proposes pairs that have actually co-occurred; we
|
|
39
|
+
* never invent novel pairs out of nothing.
|
|
40
|
+
* - HMAC-signed evolution reports + chain of cycles for tamper audit.
|
|
41
|
+
*/
|
|
42
|
+
declare const PROTOCOL_VERSION: 1;
|
|
43
|
+
export type LifecycleBand = "gestating" | "juvenile" | "mature" | "atrophied";
|
|
44
|
+
export interface ToolUseRecord {
|
|
45
|
+
toolName: string;
|
|
46
|
+
/** Birth ts (when this tool was proposed/promoted). */
|
|
47
|
+
bornTs: number;
|
|
48
|
+
/** Number of times this tool was called since birth. */
|
|
49
|
+
useCount: number;
|
|
50
|
+
/** Last use ts (for atrophy detection). */
|
|
51
|
+
lastUseTs: number;
|
|
52
|
+
}
|
|
53
|
+
export interface UseLogEntry {
|
|
54
|
+
/** Tool name called this event. */
|
|
55
|
+
toolName: string;
|
|
56
|
+
ts: number;
|
|
57
|
+
}
|
|
58
|
+
export interface LifecycleConfig {
|
|
59
|
+
/** ms; default 7 days */
|
|
60
|
+
gestatingMaxAgeMs?: number;
|
|
61
|
+
/** ms; default 30 days */
|
|
62
|
+
juvenileMaxAgeMs?: number;
|
|
63
|
+
/** count; default 5 */
|
|
64
|
+
juvenileMinUses?: number;
|
|
65
|
+
/** count; default 50 */
|
|
66
|
+
matureMinUses?: number;
|
|
67
|
+
/** count per week; below this in MATURE age = atrophied */
|
|
68
|
+
atrophiedMaxUsesPerWeek?: number;
|
|
69
|
+
}
|
|
70
|
+
export interface LifecycleVerdict {
|
|
71
|
+
v: typeof PROTOCOL_VERSION;
|
|
72
|
+
toolName: string;
|
|
73
|
+
band: LifecycleBand;
|
|
74
|
+
ageMs: number;
|
|
75
|
+
ageDays: number;
|
|
76
|
+
useCount: number;
|
|
77
|
+
usesPerWeek: number;
|
|
78
|
+
reason: string;
|
|
79
|
+
/** Recommended action: keep / promote / sunset. */
|
|
80
|
+
recommendation: "keep" | "promote" | "sunset";
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Classify a tool's lifecycle band based on age + use count + recency.
|
|
84
|
+
* Priority order:
|
|
85
|
+
* 1. age < gestatingMax → gestating
|
|
86
|
+
* 2. age < juvenileMax AND uses >= juvenileMin → juvenile
|
|
87
|
+
* 3. age >= juvenileMax AND uses >= matureMin → mature (promote)
|
|
88
|
+
* 4. uses-per-week < atrophiedMax → atrophied (sunset)
|
|
89
|
+
* 5. fallback → juvenile (still proving)
|
|
90
|
+
*/
|
|
91
|
+
export declare function classifyLifecycle(input: {
|
|
92
|
+
record: ToolUseRecord;
|
|
93
|
+
nowMs: number;
|
|
94
|
+
config?: LifecycleConfig;
|
|
95
|
+
}): LifecycleVerdict;
|
|
96
|
+
export interface MatingPair {
|
|
97
|
+
toolA: string;
|
|
98
|
+
toolB: string;
|
|
99
|
+
coOccurrenceCount: number;
|
|
100
|
+
/** Window in ms within which we counted A-then-B as co-occurring. */
|
|
101
|
+
windowMs: number;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Scan a chronological use log for ordered (A, B) pairs that occur
|
|
105
|
+
* within `windowMs` of each other, more than `minCount` times.
|
|
106
|
+
*
|
|
107
|
+
* Returns pairs sorted by frequency desc. Each pair becomes a candidate
|
|
108
|
+
* mating signal for a brand-new chimera.
|
|
109
|
+
*/
|
|
110
|
+
export declare function selectMatingPairs(input: {
|
|
111
|
+
log: UseLogEntry[];
|
|
112
|
+
windowMs?: number;
|
|
113
|
+
minCount?: number;
|
|
114
|
+
}): MatingPair[];
|
|
115
|
+
export interface EvolutionReport {
|
|
116
|
+
v: typeof PROTOCOL_VERSION;
|
|
117
|
+
cycleAt: number;
|
|
118
|
+
verdicts: LifecycleVerdict[];
|
|
119
|
+
matingPairs: MatingPair[];
|
|
120
|
+
bandCounts: Record<LifecycleBand, number>;
|
|
121
|
+
promoteCount: number;
|
|
122
|
+
sunsetCount: number;
|
|
123
|
+
sig: string;
|
|
124
|
+
}
|
|
125
|
+
export declare function runEvolutionCycle(input: {
|
|
126
|
+
records: ToolUseRecord[];
|
|
127
|
+
log: UseLogEntry[];
|
|
128
|
+
nowMs?: number;
|
|
129
|
+
config?: LifecycleConfig;
|
|
130
|
+
matingWindowMs?: number;
|
|
131
|
+
matingMinCount?: number;
|
|
132
|
+
cycleAt?: number;
|
|
133
|
+
secret?: string;
|
|
134
|
+
}): EvolutionReport;
|
|
135
|
+
export declare function verifyEvolutionReport(r: EvolutionReport, secret?: string): boolean;
|
|
136
|
+
export declare const LIFECYCLE_EMOJI: Record<LifecycleBand, string>;
|
|
137
|
+
export declare function formatEvolutionLine(r: EvolutionReport): string;
|
|
138
|
+
export declare function formatVerdictLine(v: LifecycleVerdict): string;
|
|
139
|
+
export {};
|
|
140
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dreamspace_evolution/index.ts"],"names":[],"mappings":"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"}
|