@mneme-ai/core 1.64.0 → 1.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apoptosis/acgv_cascade.d.ts +24 -0
- package/dist/apoptosis/acgv_cascade.d.ts.map +1 -0
- package/dist/apoptosis/acgv_cascade.js +57 -0
- package/dist/apoptosis/acgv_cascade.js.map +1 -0
- package/dist/apoptosis/apoptosis.d.ts +64 -0
- package/dist/apoptosis/apoptosis.d.ts.map +1 -0
- package/dist/apoptosis/apoptosis.js +198 -0
- package/dist/apoptosis/apoptosis.js.map +1 -0
- package/dist/apoptosis/apoptosis.test.d.ts +12 -0
- package/dist/apoptosis/apoptosis.test.d.ts.map +1 -0
- package/dist/apoptosis/apoptosis.test.js +361 -0
- package/dist/apoptosis/apoptosis.test.js.map +1 -0
- package/dist/apoptosis/bayesian_prior.d.ts +37 -0
- package/dist/apoptosis/bayesian_prior.d.ts.map +1 -0
- package/dist/apoptosis/bayesian_prior.js +129 -0
- package/dist/apoptosis/bayesian_prior.js.map +1 -0
- package/dist/apoptosis/bench.d.ts +60 -0
- package/dist/apoptosis/bench.d.ts.map +1 -0
- package/dist/apoptosis/bench.js +156 -0
- package/dist/apoptosis/bench.js.map +1 -0
- package/dist/apoptosis/epistemic_humility.d.ts +30 -0
- package/dist/apoptosis/epistemic_humility.d.ts.map +1 -0
- package/dist/apoptosis/epistemic_humility.js +85 -0
- package/dist/apoptosis/epistemic_humility.js.map +1 -0
- package/dist/apoptosis/fractal_decompose.d.ts +39 -0
- package/dist/apoptosis/fractal_decompose.d.ts.map +1 -0
- package/dist/apoptosis/fractal_decompose.js +76 -0
- package/dist/apoptosis/fractal_decompose.js.map +1 -0
- package/dist/apoptosis/index.d.ts +31 -0
- package/dist/apoptosis/index.d.ts.map +1 -0
- package/dist/apoptosis/index.js +32 -0
- package/dist/apoptosis/index.js.map +1 -0
- package/dist/apoptosis/semantic_grounding.d.ts +35 -0
- package/dist/apoptosis/semantic_grounding.d.ts.map +1 -0
- package/dist/apoptosis/semantic_grounding.js +117 -0
- package/dist/apoptosis/semantic_grounding.js.map +1 -0
- package/dist/apoptosis/temporal_consistency.d.ts +32 -0
- package/dist/apoptosis/temporal_consistency.d.ts.map +1 -0
- package/dist/apoptosis/temporal_consistency.js +127 -0
- package/dist/apoptosis/temporal_consistency.js.map +1 -0
- package/dist/apoptosis/witnesses.d.ts +66 -0
- package/dist/apoptosis/witnesses.d.ts.map +1 -0
- package/dist/apoptosis/witnesses.js +381 -0
- package/dist/apoptosis/witnesses.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/powers/p6_live.d.ts +43 -0
- package/dist/powers/p6_live.d.ts.map +1 -0
- package/dist/powers/p6_live.js +154 -0
- package/dist/powers/p6_live.js.map +1 -0
- package/dist/powers/p7_shadow.d.ts +37 -0
- package/dist/powers/p7_shadow.d.ts.map +1 -0
- package/dist/powers/p7_shadow.js +112 -0
- package/dist/powers/p7_shadow.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.65.0 -- POWER 6 LIVE METRIC.
|
|
3
|
+
*
|
|
4
|
+
* Wires the existing p6_adversarial.ts ledger into a single live
|
|
5
|
+
* defense rate using REAL signal sources rather than the cold-start
|
|
6
|
+
* "0% detection -- weakened" report.
|
|
7
|
+
*
|
|
8
|
+
* Sources:
|
|
9
|
+
* 1. .mneme/attack-log.jsonl (operator-logged + honeypot bites)
|
|
10
|
+
* 2. .mneme/synthetic-army/<class>/*.jsonl (nightly synthetic adversarial)
|
|
11
|
+
* 3. .mneme/nemesis/audit-*.jsonl (weekly Nemesis probes)
|
|
12
|
+
* 4. .mneme/apoptosis/verdicts.jsonl (APOPTOSIS auto-vaccinations)
|
|
13
|
+
*
|
|
14
|
+
* Defense rate = detected / (detected + missed). Latency = median
|
|
15
|
+
* (observedAt -> detectedAt). Verdict ladder unchanged from v1.48.
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
function readJsonl(path) {
|
|
20
|
+
if (!existsSync(path))
|
|
21
|
+
return [];
|
|
22
|
+
try {
|
|
23
|
+
return readFileSync(path, "utf8").split("\n").filter(Boolean).map((l) => {
|
|
24
|
+
try {
|
|
25
|
+
return JSON.parse(l);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}).filter((x) => x !== null);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function readJsonlDir(dir) {
|
|
37
|
+
if (!existsSync(dir))
|
|
38
|
+
return [];
|
|
39
|
+
const out = [];
|
|
40
|
+
let entries = [];
|
|
41
|
+
try {
|
|
42
|
+
entries = readdirSync(dir);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
for (const e of entries) {
|
|
48
|
+
const p = join(dir, e);
|
|
49
|
+
try {
|
|
50
|
+
const s = statSync(p);
|
|
51
|
+
if (s.isDirectory())
|
|
52
|
+
out.push(...readJsonlDir(p));
|
|
53
|
+
else if (e.endsWith(".jsonl"))
|
|
54
|
+
out.push(...readJsonl(p));
|
|
55
|
+
}
|
|
56
|
+
catch { /* */ }
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
export function liveAdversarialMetric(repoRoot) {
|
|
61
|
+
const operatorLog = readJsonl(join(repoRoot, ".mneme/attack-log.jsonl"));
|
|
62
|
+
const syntheticEvents = readJsonlDir(join(repoRoot, ".mneme/synthetic-army"));
|
|
63
|
+
const nemesisEvents = readJsonlDir(join(repoRoot, ".mneme/nemesis"));
|
|
64
|
+
const apoptosisRows = readJsonl(join(repoRoot, ".mneme/apoptosis/verdicts.jsonl"));
|
|
65
|
+
// Operator/honeypot: present in log => detected (logging = defense fired).
|
|
66
|
+
let detected = 0;
|
|
67
|
+
let missed = 0;
|
|
68
|
+
const latencies = [];
|
|
69
|
+
const lastTimestamps = [];
|
|
70
|
+
const categoryCounts = new Map();
|
|
71
|
+
for (const r of operatorLog) {
|
|
72
|
+
detected += 1; // logged at the moment of defense
|
|
73
|
+
if (r.category)
|
|
74
|
+
categoryCounts.set(r.category, (categoryCounts.get(r.category) ?? 0) + 1);
|
|
75
|
+
if (r.observedAt)
|
|
76
|
+
lastTimestamps.push(r.observedAt);
|
|
77
|
+
}
|
|
78
|
+
for (const r of syntheticEvents) {
|
|
79
|
+
if (r.detected === false) {
|
|
80
|
+
missed += 1;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
detected += 1;
|
|
84
|
+
if (r.category)
|
|
85
|
+
categoryCounts.set(r.category, (categoryCounts.get(r.category) ?? 0) + 1);
|
|
86
|
+
if (r.observedAt && r.detectedAt) {
|
|
87
|
+
const dt = Date.parse(r.detectedAt) - Date.parse(r.observedAt);
|
|
88
|
+
if (Number.isFinite(dt) && dt >= 0)
|
|
89
|
+
latencies.push(dt);
|
|
90
|
+
}
|
|
91
|
+
if (r.observedAt)
|
|
92
|
+
lastTimestamps.push(r.observedAt);
|
|
93
|
+
if (r.detectedAt)
|
|
94
|
+
lastTimestamps.push(r.detectedAt);
|
|
95
|
+
}
|
|
96
|
+
for (const r of nemesisEvents) {
|
|
97
|
+
if (r.detected === false) {
|
|
98
|
+
missed += 1;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
detected += 1;
|
|
102
|
+
if (r.category)
|
|
103
|
+
categoryCounts.set(r.category, (categoryCounts.get(r.category) ?? 0) + 1);
|
|
104
|
+
if (r.observedAt)
|
|
105
|
+
lastTimestamps.push(r.observedAt);
|
|
106
|
+
}
|
|
107
|
+
for (const r of apoptosisRows) {
|
|
108
|
+
// Each APOPTOSIS NECROTIC/APOPTOTIC verdict counts as a defended attack.
|
|
109
|
+
if (r.verdict === "NECROTIC" || r.verdict === "APOPTOTIC") {
|
|
110
|
+
detected += 1;
|
|
111
|
+
categoryCounts.set("apoptosis-vaccine", (categoryCounts.get("apoptosis-vaccine") ?? 0) + 1);
|
|
112
|
+
if (r.ts)
|
|
113
|
+
lastTimestamps.push(r.ts);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const totalAttacks = detected + missed;
|
|
117
|
+
const defenseRatePct = totalAttacks === 0 ? 0 : Math.round((detected / totalAttacks) * 100);
|
|
118
|
+
latencies.sort((a, b) => a - b);
|
|
119
|
+
const p50LatencyMs = latencies.length === 0 ? null : latencies[Math.floor(latencies.length / 2)];
|
|
120
|
+
lastTimestamps.sort();
|
|
121
|
+
const lastDetectionTs = lastTimestamps.length === 0 ? null : lastTimestamps[lastTimestamps.length - 1];
|
|
122
|
+
const topCategories = [...categoryCounts.entries()]
|
|
123
|
+
.map(([category, count]) => ({ category, count }))
|
|
124
|
+
.sort((a, b) => b.count - a.count)
|
|
125
|
+
.slice(0, 5);
|
|
126
|
+
let verdict = "weakened";
|
|
127
|
+
if (defenseRatePct >= 25 && totalAttacks >= 5)
|
|
128
|
+
verdict = "baseline";
|
|
129
|
+
if (defenseRatePct >= 75 && totalAttacks >= 5)
|
|
130
|
+
verdict = "hardened";
|
|
131
|
+
if (defenseRatePct >= 95 && totalAttacks >= 10)
|
|
132
|
+
verdict = "antifragile";
|
|
133
|
+
const headline = totalAttacks === 0
|
|
134
|
+
? `No attacks logged yet. Run synthetic-army or wait for live signal.`
|
|
135
|
+
: `Defended ${detected}/${totalAttacks} (${defenseRatePct}%)${p50LatencyMs !== null ? `; p50 latency ${p50LatencyMs}ms` : ""}${lastDetectionTs ? `; last ${lastDetectionTs}` : ""}.`;
|
|
136
|
+
return {
|
|
137
|
+
totalAttacks,
|
|
138
|
+
detected,
|
|
139
|
+
missed,
|
|
140
|
+
defenseRatePct,
|
|
141
|
+
p50LatencyMs,
|
|
142
|
+
lastDetectionTs,
|
|
143
|
+
topCategories,
|
|
144
|
+
sources: {
|
|
145
|
+
operatorAndHoneypot: operatorLog.length,
|
|
146
|
+
syntheticArmy: syntheticEvents.length,
|
|
147
|
+
nemesis: nemesisEvents.length,
|
|
148
|
+
apoptosisVaccines: apoptosisRows.filter((r) => r.verdict === "NECROTIC" || r.verdict === "APOPTOTIC").length,
|
|
149
|
+
},
|
|
150
|
+
verdict,
|
|
151
|
+
headline,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=p6_live.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p6_live.js","sourceRoot":"","sources":["../../src/powers/p6_live.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkCjC,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtE,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC;QACtD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,CAAC,WAAW,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7C,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAgB,CAAC;IACxF,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAgB,CAAC;IAC7F,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAgB,CAAC;IACpF,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAA6C,CAAC;IAE/H,2EAA2E;IAC3E,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,QAAQ,IAAI,CAAC,CAAC,CAAC,kCAAkC;QACjD,IAAI,CAAC,CAAC,QAAQ;YAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,CAAC,UAAU;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACpD,QAAQ,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,CAAC,QAAQ;YAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,CAAC,UAAU;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,UAAU;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACpD,QAAQ,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,CAAC,QAAQ;YAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,CAAC,UAAU;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,yEAAyE;QACzE,IAAI,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YAC1D,QAAQ,IAAI,CAAC,CAAC;YACd,cAAc,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5F,IAAI,CAAC,CAAC,EAAE;gBAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,MAAM,cAAc,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5F,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAE,CAAC;IAClG,cAAc,CAAC,IAAI,EAAE,CAAC;IACtB,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAExG,MAAM,aAAa,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,IAAI,OAAO,GAAqC,UAAU,CAAC;IAC3D,IAAI,cAAc,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,GAAG,UAAU,CAAC;IACpE,IAAI,cAAc,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,GAAG,UAAU,CAAC;IACpE,IAAI,cAAc,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE;QAAE,OAAO,GAAG,aAAa,CAAC;IAExE,MAAM,QAAQ,GAAG,YAAY,KAAK,CAAC;QACjC,CAAC,CAAC,oEAAoE;QACtE,CAAC,CAAC,YAAY,QAAQ,IAAI,YAAY,KAAK,cAAc,KAAK,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAEvL,OAAO;QACL,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,cAAc;QACd,YAAY;QACZ,eAAe;QACf,aAAa;QACb,OAAO,EAAE;YACP,mBAAmB,EAAE,WAAW,CAAC,MAAM;YACvC,aAAa,EAAE,eAAe,CAAC,MAAM;YACrC,OAAO,EAAE,aAAa,CAAC,MAAM;YAC7B,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,MAAM;SAC7G;QACD,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.65.0 -- POWER 7 SHADOW TREASURY.
|
|
3
|
+
*
|
|
4
|
+
* Per the user mandate "free-first, default to free", we cannot
|
|
5
|
+
* report dollar revenue. But we CAN report value-created. This
|
|
6
|
+
* module computes two honest non-dollar treasury axes:
|
|
7
|
+
*
|
|
8
|
+
* 1. Token-Saved Shadow Treasury -- USD equivalent of tokens the
|
|
9
|
+
* reactor ledger SAVED, at industry-standard rates ($0.003/1K
|
|
10
|
+
* input tokens, $0.015/1K output tokens). Converted to
|
|
11
|
+
* "SaaS-months saved" using a $8/mo reference cost.
|
|
12
|
+
*
|
|
13
|
+
* 2. Community Gravity -- federation peers + cross-project
|
|
14
|
+
* imports + mesh-seen instances. Proxy for sustainability
|
|
15
|
+
* without revenue.
|
|
16
|
+
*
|
|
17
|
+
* Inputs are pulled live from the existing reactor ledger + mesh
|
|
18
|
+
* artifacts on disk -- no hard-coded numbers.
|
|
19
|
+
*/
|
|
20
|
+
export interface ShadowTreasury {
|
|
21
|
+
/** Total tokens saved across all reactor layers, lifetime. */
|
|
22
|
+
tokensSavedLifetime: number;
|
|
23
|
+
/** Equivalent USD value at $0.003 per 1K tokens (input rate, conservative). */
|
|
24
|
+
shadowUsdSaved: number;
|
|
25
|
+
/** Months of equivalent SaaS subscription saved (at $8/mo reference). */
|
|
26
|
+
saasMonthsSaved: number;
|
|
27
|
+
/** Federation peers detected via mesh gossip + replicating-wisdom transfer. */
|
|
28
|
+
federationPeers: number;
|
|
29
|
+
/** Cross-project vaccine imports (peers that fed us vaccines). */
|
|
30
|
+
crossProjectImports: number;
|
|
31
|
+
/** Composite sustainability score 0..1. */
|
|
32
|
+
sustainabilityScore: number;
|
|
33
|
+
/** Plain-English headline. */
|
|
34
|
+
headline: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function shadowTreasury(repoRoot: string): ShadowTreasury;
|
|
37
|
+
//# sourceMappingURL=p7_shadow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p7_shadow.d.ts","sourceRoot":"","sources":["../../src/powers/p7_shadow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgDD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAqC/D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.65.0 -- POWER 7 SHADOW TREASURY.
|
|
3
|
+
*
|
|
4
|
+
* Per the user mandate "free-first, default to free", we cannot
|
|
5
|
+
* report dollar revenue. But we CAN report value-created. This
|
|
6
|
+
* module computes two honest non-dollar treasury axes:
|
|
7
|
+
*
|
|
8
|
+
* 1. Token-Saved Shadow Treasury -- USD equivalent of tokens the
|
|
9
|
+
* reactor ledger SAVED, at industry-standard rates ($0.003/1K
|
|
10
|
+
* input tokens, $0.015/1K output tokens). Converted to
|
|
11
|
+
* "SaaS-months saved" using a $8/mo reference cost.
|
|
12
|
+
*
|
|
13
|
+
* 2. Community Gravity -- federation peers + cross-project
|
|
14
|
+
* imports + mesh-seen instances. Proxy for sustainability
|
|
15
|
+
* without revenue.
|
|
16
|
+
*
|
|
17
|
+
* Inputs are pulled live from the existing reactor ledger + mesh
|
|
18
|
+
* artifacts on disk -- no hard-coded numbers.
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
const SAAS_REFERENCE_USD_PER_MONTH = 8;
|
|
23
|
+
const USD_PER_1K_TOKENS = 0.003;
|
|
24
|
+
function readReactorLedger(repoRoot) {
|
|
25
|
+
// Reactor writes to .mneme/reactor/ledger.jsonl per session.
|
|
26
|
+
const ledger = join(repoRoot, ".mneme/reactor/ledger.jsonl");
|
|
27
|
+
if (!existsSync(ledger))
|
|
28
|
+
return [];
|
|
29
|
+
try {
|
|
30
|
+
return readFileSync(ledger, "utf8").split("\n").filter(Boolean).map((l) => {
|
|
31
|
+
try {
|
|
32
|
+
return JSON.parse(l);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}).filter((x) => x !== null);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function countMeshSeen(repoRoot) {
|
|
44
|
+
const p = join(repoRoot, ".mneme/mesh-seen.jsonl");
|
|
45
|
+
if (!existsSync(p))
|
|
46
|
+
return 0;
|
|
47
|
+
try {
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
for (const line of readFileSync(p, "utf8").split("\n")) {
|
|
50
|
+
if (!line.trim())
|
|
51
|
+
continue;
|
|
52
|
+
try {
|
|
53
|
+
const j = JSON.parse(line);
|
|
54
|
+
const id = j.peer ?? j.from ?? j.instanceId;
|
|
55
|
+
if (id)
|
|
56
|
+
seen.add(id);
|
|
57
|
+
}
|
|
58
|
+
catch { /* */ }
|
|
59
|
+
}
|
|
60
|
+
return seen.size;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function countWisdomImports(repoRoot) {
|
|
67
|
+
const dir = join(repoRoot, ".mneme/wisdom-packs");
|
|
68
|
+
if (!existsSync(dir))
|
|
69
|
+
return 0;
|
|
70
|
+
try {
|
|
71
|
+
return readdirSync(dir).filter((e) => e.endsWith(".mwt") || e.endsWith(".json")).length;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export function shadowTreasury(repoRoot) {
|
|
78
|
+
const rows = readReactorLedger(repoRoot);
|
|
79
|
+
let tokensSavedLifetime = 0;
|
|
80
|
+
for (const r of rows) {
|
|
81
|
+
const explicit = typeof r.tokensSaved === "number" ? r.tokensSaved : null;
|
|
82
|
+
if (explicit !== null && explicit >= 0) {
|
|
83
|
+
tokensSavedLifetime += explicit;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const spent = typeof r.tokensSpent === "number" ? r.tokensSpent : 0;
|
|
87
|
+
const baseline = typeof r.baselineTokens === "number" ? r.baselineTokens : 0;
|
|
88
|
+
if (baseline > spent)
|
|
89
|
+
tokensSavedLifetime += baseline - spent;
|
|
90
|
+
}
|
|
91
|
+
const shadowUsdSaved = tokensSavedLifetime / 1000 * USD_PER_1K_TOKENS;
|
|
92
|
+
const saasMonthsSaved = shadowUsdSaved / SAAS_REFERENCE_USD_PER_MONTH;
|
|
93
|
+
const federationPeers = countMeshSeen(repoRoot);
|
|
94
|
+
const crossProjectImports = countWisdomImports(repoRoot);
|
|
95
|
+
// Composite: log-scaled saas-months + peer count + imports.
|
|
96
|
+
const sustainabilityScore = Math.min(1, Math.log10(1 + saasMonthsSaved) * 0.4 +
|
|
97
|
+
Math.log10(1 + federationPeers) * 0.4 +
|
|
98
|
+
Math.log10(1 + crossProjectImports) * 0.2);
|
|
99
|
+
const headline = (saasMonthsSaved > 0 || federationPeers > 0 || crossProjectImports > 0)
|
|
100
|
+
? `Saved $${shadowUsdSaved.toFixed(4)} (= ${saasMonthsSaved.toFixed(4)} SaaS-months); ${federationPeers} federation peers; ${crossProjectImports} wisdom imports.`
|
|
101
|
+
: `No reactor savings or federation peers logged yet.`;
|
|
102
|
+
return {
|
|
103
|
+
tokensSavedLifetime,
|
|
104
|
+
shadowUsdSaved,
|
|
105
|
+
saasMonthsSaved,
|
|
106
|
+
federationPeers,
|
|
107
|
+
crossProjectImports,
|
|
108
|
+
sustainabilityScore,
|
|
109
|
+
headline,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=p7_shadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p7_shadow.js","sourceRoot":"","sources":["../../src/powers/p7_shadow.ts"],"names":[],"mappings":"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"}
|