@mneme-ai/core 2.19.4 → 2.19.6
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/agent_manifest.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +14 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/chronostasis/chronostasis.test.d.ts +2 -0
- package/dist/chronostasis/chronostasis.test.d.ts.map +1 -0
- package/dist/chronostasis/chronostasis.test.js +343 -0
- package/dist/chronostasis/chronostasis.test.js.map +1 -0
- package/dist/chronostasis/index.d.ts +196 -0
- package/dist/chronostasis/index.d.ts.map +1 -0
- package/dist/chronostasis/index.js +491 -0
- package/dist/chronostasis/index.js.map +1 -0
- package/dist/conversation_compiler/conversation_compiler.test.d.ts +2 -0
- package/dist/conversation_compiler/conversation_compiler.test.d.ts.map +1 -0
- package/dist/conversation_compiler/conversation_compiler.test.js +280 -0
- package/dist/conversation_compiler/conversation_compiler.test.js.map +1 -0
- package/dist/conversation_compiler/index.d.ts +144 -0
- package/dist/conversation_compiler/index.d.ts.map +1 -0
- package/dist/conversation_compiler/index.js +412 -0
- package/dist/conversation_compiler/index.js.map +1 -0
- package/dist/cosmic/aurelian_v195.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v195.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v195.test.js +34 -0
- package/dist/cosmic/aurelian_v195.test.js.map +1 -0
- package/dist/cosmic/aurelian_v196.test.d.ts +2 -0
- package/dist/cosmic/aurelian_v196.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v196.test.js +33 -0
- package/dist/cosmic/aurelian_v196.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/intent_router/index.d.ts.map +1 -1
- package/dist/intent_router/index.js +68 -0
- package/dist/intent_router/index.js.map +1 -1
- package/dist/intent_router/intent_router.test.js +4 -3
- package/dist/intent_router/intent_router.test.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/package.json +1 -1
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.5 — MNEME CHRONOSTASIS · FLAGSHIP · Time-Locked Provable Memory
|
|
3
|
+
*
|
|
4
|
+
* "Every claim Mneme makes starts as PENDING. It must survive a
|
|
5
|
+
* `deadlineMs` adversarial window during which any witness AI can
|
|
6
|
+
* refute it with evidence. If a verdict comes back with refute=true
|
|
7
|
+
* + confidence ≥ rewindThreshold, the dependency graph is walked
|
|
8
|
+
* and EVERY downstream pending claim is deprecated — Mneme can
|
|
9
|
+
* unsay its past automatically. If the deadline passes with no
|
|
10
|
+
* valid refute, the claim CRYSTALLIZES into an immutable axiom.
|
|
11
|
+
* Axioms gravitationally attract related future queries (jaccard
|
|
12
|
+
* similarity) and are returned as 'these have been time-tested'.
|
|
13
|
+
*
|
|
14
|
+
* No AI vendor on Earth ships a primitive that AUTOMATICALLY
|
|
15
|
+
* rewinds its own history when adversarial witnesses disagree.
|
|
16
|
+
* Mneme is the first."
|
|
17
|
+
*
|
|
18
|
+
* Five phases (all in this file; ~one source of truth):
|
|
19
|
+
* Phase 1 proposeClaim wrap → pending; HMAC + dep-graph indexed
|
|
20
|
+
* Phase 2 recordVerdict witness vendor adds refute / not-refute + conf
|
|
21
|
+
* Phase 3 tick → REWIND refuted with conf≥0.7 → deprecate dep cascade
|
|
22
|
+
* Phase 4 tick → CRYSTAL. deadline passed + all deps are axioms → axiom
|
|
23
|
+
* Phase 5 truthGravity similarity over body text → ranked axioms
|
|
24
|
+
*
|
|
25
|
+
* Honest scope:
|
|
26
|
+
* - CHRONOSTASIS is the orchestrator + signed-storage layer. It does
|
|
27
|
+
* NOT call AI vendors itself. The caller fans out witness prompts
|
|
28
|
+
* to any vendors of choice (Claude / GPT / Gemini / Grok / Cursor /
|
|
29
|
+
* Codex / etc.) and pipes verdicts back via recordVerdict().
|
|
30
|
+
* - Axioms are immutable. Once crystallized, they can never be refuted.
|
|
31
|
+
* This is intentional: it enforces "time-tested" semantics. If new
|
|
32
|
+
* evidence emerges later, propose a new pending claim that depends
|
|
33
|
+
* on the contradiction; the system will reckon with it.
|
|
34
|
+
* - REWIND cascades only through PENDING claims. Axioms never deprecate.
|
|
35
|
+
* Crystallization gate enforces all-dependencies-are-axioms first.
|
|
36
|
+
* - Truth gravity uses lexical jaccard (portable, no deps). Replace
|
|
37
|
+
* with embeddings in a future release if higher fidelity is needed.
|
|
38
|
+
*/
|
|
39
|
+
import { createHmac, timingSafeEqual } from "node:crypto";
|
|
40
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
41
|
+
import { dirname } from "node:path";
|
|
42
|
+
const PROTOCOL_VERSION = 1;
|
|
43
|
+
const DEFAULT_REWIND_THRESHOLD = 0.7;
|
|
44
|
+
const STOP = new Set([
|
|
45
|
+
"the", "a", "an", "and", "or", "but", "is", "it", "to", "of", "in", "on",
|
|
46
|
+
"for", "with", "as", "at", "by", "this", "that", "be", "you", "i", "we",
|
|
47
|
+
"they", "are", "was", "were", "have", "has", "had", "do", "does", "did",
|
|
48
|
+
]);
|
|
49
|
+
function tokenize(s) {
|
|
50
|
+
return (s.toLowerCase().match(/[a-z][a-z0-9_]+/g) ?? []).filter((t) => !STOP.has(t) && t.length >= 2);
|
|
51
|
+
}
|
|
52
|
+
function jaccardSim(a, b) {
|
|
53
|
+
const ta = new Set(tokenize(a));
|
|
54
|
+
const tb = new Set(tokenize(b));
|
|
55
|
+
if (ta.size === 0 && tb.size === 0)
|
|
56
|
+
return 1;
|
|
57
|
+
let inter = 0;
|
|
58
|
+
for (const t of ta)
|
|
59
|
+
if (tb.has(t))
|
|
60
|
+
inter++;
|
|
61
|
+
const union = ta.size + tb.size - inter;
|
|
62
|
+
return union === 0 ? 0 : inter / union;
|
|
63
|
+
}
|
|
64
|
+
function canon(v) {
|
|
65
|
+
if (v === null || typeof v !== "object")
|
|
66
|
+
return JSON.stringify(v);
|
|
67
|
+
if (Array.isArray(v))
|
|
68
|
+
return "[" + v.map(canon).join(",") + "]";
|
|
69
|
+
const keys = Object.keys(v).sort();
|
|
70
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
|
|
71
|
+
}
|
|
72
|
+
function defaultSecret() {
|
|
73
|
+
return process.env["MNEME_CHRONOSTASIS_SECRET"] || `mneme-chronostasis-v${PROTOCOL_VERSION}`;
|
|
74
|
+
}
|
|
75
|
+
function hmac(body, secret) {
|
|
76
|
+
return createHmac("sha256", secret).update(canon(body)).digest("hex");
|
|
77
|
+
}
|
|
78
|
+
function safeEqHex(a, b) {
|
|
79
|
+
try {
|
|
80
|
+
return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const GENESIS_SIG = "genesis".padEnd(64, "0");
|
|
87
|
+
export class Chronostasis {
|
|
88
|
+
pendingPath;
|
|
89
|
+
verdictsPath;
|
|
90
|
+
axiomsPath;
|
|
91
|
+
rewindsPath;
|
|
92
|
+
secret;
|
|
93
|
+
rewindThreshold;
|
|
94
|
+
pending = new Map();
|
|
95
|
+
verdicts = new Map(); // claimId → verdicts
|
|
96
|
+
axioms = [];
|
|
97
|
+
rewinds = [];
|
|
98
|
+
deprecated = new Set();
|
|
99
|
+
/** Reverse index: for each claim, the set of pending claims depending on it. */
|
|
100
|
+
dependents = new Map();
|
|
101
|
+
/** Append-only ordered list of all pending IDs ever proposed (for chain). */
|
|
102
|
+
pendingChainOrder = [];
|
|
103
|
+
constructor(opts = {}) {
|
|
104
|
+
this.pendingPath = opts.pendingPath ?? ".mneme/chronostasis/pending.jsonl";
|
|
105
|
+
this.verdictsPath = opts.verdictsPath ?? ".mneme/chronostasis/verdicts.jsonl";
|
|
106
|
+
this.axiomsPath = opts.axiomsPath ?? ".mneme/chronostasis/axioms.jsonl";
|
|
107
|
+
this.rewindsPath = opts.rewindsPath ?? ".mneme/chronostasis/rewinds.jsonl";
|
|
108
|
+
this.secret = opts.secret ?? defaultSecret();
|
|
109
|
+
this.rewindThreshold = opts.rewindThreshold ?? DEFAULT_REWIND_THRESHOLD;
|
|
110
|
+
this.loadIfExists();
|
|
111
|
+
}
|
|
112
|
+
loadIfExists() {
|
|
113
|
+
const readJsonl = (p) => {
|
|
114
|
+
if (!existsSync(p))
|
|
115
|
+
return [];
|
|
116
|
+
const text = readFileSync(p, "utf8");
|
|
117
|
+
const out = [];
|
|
118
|
+
for (const line of text.split("\n")) {
|
|
119
|
+
const t = line.trim();
|
|
120
|
+
if (!t)
|
|
121
|
+
continue;
|
|
122
|
+
try {
|
|
123
|
+
out.push(JSON.parse(t));
|
|
124
|
+
}
|
|
125
|
+
catch { /* skip */ }
|
|
126
|
+
}
|
|
127
|
+
return out;
|
|
128
|
+
};
|
|
129
|
+
for (const c of readJsonl(this.pendingPath)) {
|
|
130
|
+
this.pending.set(c.claimId, c);
|
|
131
|
+
this.pendingChainOrder.push(c.claimId);
|
|
132
|
+
for (const dep of c.dependsOn) {
|
|
133
|
+
let s = this.dependents.get(dep);
|
|
134
|
+
if (!s) {
|
|
135
|
+
s = new Set();
|
|
136
|
+
this.dependents.set(dep, s);
|
|
137
|
+
}
|
|
138
|
+
s.add(c.claimId);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
for (const v of readJsonl(this.verdictsPath)) {
|
|
142
|
+
const list = this.verdicts.get(v.claimId) ?? [];
|
|
143
|
+
list.push(v);
|
|
144
|
+
this.verdicts.set(v.claimId, list);
|
|
145
|
+
}
|
|
146
|
+
this.axioms.push(...readJsonl(this.axiomsPath));
|
|
147
|
+
this.rewinds.push(...readJsonl(this.rewindsPath));
|
|
148
|
+
// Reconstruct deprecated set
|
|
149
|
+
for (const r of this.rewinds)
|
|
150
|
+
for (const id of r.deprecatedClaimIds)
|
|
151
|
+
this.deprecated.add(id);
|
|
152
|
+
}
|
|
153
|
+
// ── Phase 1: propose ────────────────────────────────────────────────
|
|
154
|
+
proposeClaim(input) {
|
|
155
|
+
const now = input.nowMs ?? Date.now();
|
|
156
|
+
const deadlineSec = input.deadlineSec ?? 600;
|
|
157
|
+
const proposedAt = new Date(now).toISOString();
|
|
158
|
+
const deadlineAt = new Date(now + deadlineSec * 1000).toISOString();
|
|
159
|
+
const witnessPool = input.witnessPool ?? ["claude", "chatgpt", "gemini", "grok", "perplexity"];
|
|
160
|
+
const dependsOn = (input.dependsOn ?? []).slice();
|
|
161
|
+
// Validate dependsOn exist as axiom or pending.
|
|
162
|
+
// CHECK DEPRECATED FIRST — once deprecated, the claim leaves `pending` so the
|
|
163
|
+
// "unknown" branch would fire first if we don't short-circuit here.
|
|
164
|
+
for (const dep of dependsOn) {
|
|
165
|
+
if (this.deprecated.has(dep)) {
|
|
166
|
+
throw new Error(`CHRONOSTASIS: cannot depend on deprecated claim '${dep}'`);
|
|
167
|
+
}
|
|
168
|
+
const isAxiom = this.axioms.some((a) => a.axiomId === dep || a.promotedFromClaimId === dep);
|
|
169
|
+
if (!this.pending.has(dep) && !isAxiom) {
|
|
170
|
+
throw new Error(`CHRONOSTASIS: dependsOn references unknown claim/axiom '${dep}'`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const prevSig = this.pendingChainOrder.length === 0
|
|
174
|
+
? GENESIS_SIG
|
|
175
|
+
: this.pending.get(this.pendingChainOrder[this.pendingChainOrder.length - 1]).sig;
|
|
176
|
+
const claimId = "pc-" + createHmac("sha256", "mneme-chrono-claim-id")
|
|
177
|
+
.update(`${proposedAt}|${input.body.slice(0, 80)}|${this.pendingChainOrder.length}`)
|
|
178
|
+
.digest("hex").slice(0, 14);
|
|
179
|
+
const body = {
|
|
180
|
+
v: PROTOCOL_VERSION,
|
|
181
|
+
claimId,
|
|
182
|
+
body: input.body,
|
|
183
|
+
context: input.context ?? {},
|
|
184
|
+
deadlineAt,
|
|
185
|
+
proposedAt,
|
|
186
|
+
witnessPool,
|
|
187
|
+
dependsOn,
|
|
188
|
+
prevSig,
|
|
189
|
+
};
|
|
190
|
+
const sig = hmac(body, this.secret);
|
|
191
|
+
const claim = { ...body, sig };
|
|
192
|
+
this.pending.set(claimId, claim);
|
|
193
|
+
this.pendingChainOrder.push(claimId);
|
|
194
|
+
for (const dep of dependsOn) {
|
|
195
|
+
let s = this.dependents.get(dep);
|
|
196
|
+
if (!s) {
|
|
197
|
+
s = new Set();
|
|
198
|
+
this.dependents.set(dep, s);
|
|
199
|
+
}
|
|
200
|
+
s.add(claimId);
|
|
201
|
+
}
|
|
202
|
+
this.persistAppend(this.pendingPath, claim);
|
|
203
|
+
return claim;
|
|
204
|
+
}
|
|
205
|
+
// ── Phase 2: witness ────────────────────────────────────────────────
|
|
206
|
+
/** Build the meta-prompt the caller should send to a witness vendor. */
|
|
207
|
+
buildWitnessPrompt(claim, vendor) {
|
|
208
|
+
return [
|
|
209
|
+
`You are an ADVERSARIAL WITNESS AI assigned to refute or confirm a Mneme claim.`,
|
|
210
|
+
`Vendor identity: ${vendor}`,
|
|
211
|
+
`Claim: """${claim.body}"""`,
|
|
212
|
+
claim.context && Object.keys(claim.context).length ? `Context: ${JSON.stringify(claim.context)}` : "",
|
|
213
|
+
``,
|
|
214
|
+
`Your job: search for counter-evidence in the available repo / git log / public ground truth.`,
|
|
215
|
+
`If you find solid counter-evidence, return refuted=true with a brief evidence summary + confidence 0..1.`,
|
|
216
|
+
`If the claim holds up, return refuted=false with confidence 0..1 (higher = more sure).`,
|
|
217
|
+
``,
|
|
218
|
+
`Reply STRICTLY as JSON: { "refuted": <bool>, "evidence": "<string>", "confidence": <0..1> }`,
|
|
219
|
+
].filter(Boolean).join("\n");
|
|
220
|
+
}
|
|
221
|
+
recordVerdict(input) {
|
|
222
|
+
if (!this.pending.has(input.claimId)) {
|
|
223
|
+
// Honest no-op semantics: if the claim already crystallized or got deprecated,
|
|
224
|
+
// verdicts no longer apply. Throw so the caller knows to drop.
|
|
225
|
+
throw new Error(`CHRONOSTASIS: claim '${input.claimId}' is no longer pending (axiom or deprecated)`);
|
|
226
|
+
}
|
|
227
|
+
if (input.confidence < 0 || input.confidence > 1) {
|
|
228
|
+
throw new Error(`CHRONOSTASIS: confidence must be in [0,1]; got ${input.confidence}`);
|
|
229
|
+
}
|
|
230
|
+
const now = input.nowMs ?? Date.now();
|
|
231
|
+
const ts = new Date(now).toISOString();
|
|
232
|
+
const verdictId = "wv-" + createHmac("sha256", "mneme-chrono-verdict-id")
|
|
233
|
+
.update(`${input.claimId}|${input.vendor}|${ts}`)
|
|
234
|
+
.digest("hex").slice(0, 14);
|
|
235
|
+
const body = {
|
|
236
|
+
v: PROTOCOL_VERSION,
|
|
237
|
+
verdictId,
|
|
238
|
+
claimId: input.claimId,
|
|
239
|
+
vendor: input.vendor,
|
|
240
|
+
refuted: input.refuted,
|
|
241
|
+
evidence: input.evidence,
|
|
242
|
+
confidence: input.confidence,
|
|
243
|
+
ts,
|
|
244
|
+
};
|
|
245
|
+
const sig = hmac(body, this.secret);
|
|
246
|
+
const verdict = { ...body, sig };
|
|
247
|
+
const list = this.verdicts.get(input.claimId) ?? [];
|
|
248
|
+
list.push(verdict);
|
|
249
|
+
this.verdicts.set(input.claimId, list);
|
|
250
|
+
this.persistAppend(this.verdictsPath, verdict);
|
|
251
|
+
return verdict;
|
|
252
|
+
}
|
|
253
|
+
// ── Phase 3 + 4: tick ───────────────────────────────────────────────
|
|
254
|
+
tick(input = {}) {
|
|
255
|
+
const now = input.nowMs ?? Date.now();
|
|
256
|
+
const newRewinds = [];
|
|
257
|
+
const crystallized = [];
|
|
258
|
+
// Snapshot pending IDs at tick start (mutation during loop is fine; we iterate fixed list)
|
|
259
|
+
const pendingIds = Array.from(this.pending.keys());
|
|
260
|
+
for (const claimId of pendingIds) {
|
|
261
|
+
if (!this.pending.has(claimId))
|
|
262
|
+
continue; // already processed/removed in this tick
|
|
263
|
+
const claim = this.pending.get(claimId);
|
|
264
|
+
if (this.deprecated.has(claimId))
|
|
265
|
+
continue;
|
|
266
|
+
// Look for refute-with-high-confidence
|
|
267
|
+
const verdicts = this.verdicts.get(claimId) ?? [];
|
|
268
|
+
const refutes = verdicts.filter((v) => v.refuted && v.confidence >= this.rewindThreshold);
|
|
269
|
+
if (refutes.length > 0) {
|
|
270
|
+
const top = refutes.reduce((a, b) => (b.confidence > a.confidence ? b : a));
|
|
271
|
+
const rec = this.doRewind(claimId, top, now);
|
|
272
|
+
newRewinds.push(rec);
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
// Otherwise check crystallization
|
|
276
|
+
if (Date.parse(claim.deadlineAt) <= now) {
|
|
277
|
+
// All dependsOn must be axioms (not pending, not deprecated).
|
|
278
|
+
// dep references use the ORIGINAL pending claimId, so match against
|
|
279
|
+
// axiom.promotedFromClaimId (or axiom.axiomId for axiom→axiom deps).
|
|
280
|
+
const allDepsAxiom = claim.dependsOn.every((dep) => this.axioms.some((a) => a.promotedFromClaimId === dep || a.axiomId === dep));
|
|
281
|
+
if (!allDepsAxiom)
|
|
282
|
+
continue; // wait until deps crystallize first
|
|
283
|
+
const ax = this.doCrystallize(claim, now);
|
|
284
|
+
crystallized.push(ax);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return {
|
|
288
|
+
rewinds: newRewinds,
|
|
289
|
+
crystallized,
|
|
290
|
+
stillPending: this.pending.size,
|
|
291
|
+
deprecatedSoFar: this.deprecated.size,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
doRewind(triggerClaimId, verdict, nowMs) {
|
|
295
|
+
// Walk transitive dependents
|
|
296
|
+
const toDeprecate = new Set();
|
|
297
|
+
const queue = [triggerClaimId];
|
|
298
|
+
while (queue.length > 0) {
|
|
299
|
+
const id = queue.shift();
|
|
300
|
+
if (toDeprecate.has(id))
|
|
301
|
+
continue;
|
|
302
|
+
toDeprecate.add(id);
|
|
303
|
+
const downs = this.dependents.get(id);
|
|
304
|
+
if (downs)
|
|
305
|
+
for (const d of downs) {
|
|
306
|
+
if (this.pending.has(d) && !this.deprecated.has(d))
|
|
307
|
+
queue.push(d);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Apply: mark deprecated + remove from pending map (chain stays; just marked)
|
|
311
|
+
for (const id of toDeprecate) {
|
|
312
|
+
this.deprecated.add(id);
|
|
313
|
+
this.pending.delete(id);
|
|
314
|
+
}
|
|
315
|
+
const rewindId = "rw-" + createHmac("sha256", "mneme-chrono-rewind-id")
|
|
316
|
+
.update(`${triggerClaimId}|${verdict.verdictId}|${nowMs}`)
|
|
317
|
+
.digest("hex").slice(0, 14);
|
|
318
|
+
const body = {
|
|
319
|
+
v: PROTOCOL_VERSION,
|
|
320
|
+
rewindId,
|
|
321
|
+
triggeredByClaimId: triggerClaimId,
|
|
322
|
+
triggeredByVerdictId: verdict.verdictId,
|
|
323
|
+
deprecatedClaimIds: Array.from(toDeprecate),
|
|
324
|
+
rewoundAt: new Date(nowMs).toISOString(),
|
|
325
|
+
reason: `vendor=${verdict.vendor} confidence=${verdict.confidence} evidence="${verdict.evidence.slice(0, 120)}"`,
|
|
326
|
+
};
|
|
327
|
+
const sig = hmac(body, this.secret);
|
|
328
|
+
const rec = { ...body, sig };
|
|
329
|
+
this.rewinds.push(rec);
|
|
330
|
+
this.persistAppend(this.rewindsPath, rec);
|
|
331
|
+
return rec;
|
|
332
|
+
}
|
|
333
|
+
doCrystallize(claim, nowMs) {
|
|
334
|
+
const promotedAt = new Date(nowMs).toISOString();
|
|
335
|
+
const crystallizedAfterMs = nowMs - Date.parse(claim.proposedAt);
|
|
336
|
+
const prevSig = this.axioms.length === 0 ? GENESIS_SIG : this.axioms[this.axioms.length - 1].sig;
|
|
337
|
+
const axiomId = "ax-" + createHmac("sha256", "mneme-chrono-axiom-id")
|
|
338
|
+
.update(`${claim.claimId}|${promotedAt}`)
|
|
339
|
+
.digest("hex").slice(0, 14);
|
|
340
|
+
const body = {
|
|
341
|
+
v: PROTOCOL_VERSION,
|
|
342
|
+
axiomId,
|
|
343
|
+
body: claim.body,
|
|
344
|
+
context: claim.context,
|
|
345
|
+
promotedFromClaimId: claim.claimId,
|
|
346
|
+
promotedAt,
|
|
347
|
+
crystallizedAfterMs,
|
|
348
|
+
dependsOn: claim.dependsOn.slice(),
|
|
349
|
+
prevSig,
|
|
350
|
+
};
|
|
351
|
+
const sig = hmac(body, this.secret);
|
|
352
|
+
const ax = { ...body, sig };
|
|
353
|
+
this.axioms.push(ax);
|
|
354
|
+
this.persistAppend(this.axiomsPath, ax);
|
|
355
|
+
this.pending.delete(claim.claimId);
|
|
356
|
+
return ax;
|
|
357
|
+
}
|
|
358
|
+
// ── Phase 5: truth gravity ──────────────────────────────────────────
|
|
359
|
+
axiomsRelevantTo(input) {
|
|
360
|
+
const k = input.k ?? 5;
|
|
361
|
+
const minSim = input.minSimilarity ?? 0.1;
|
|
362
|
+
const ranked = this.axioms
|
|
363
|
+
.map((a) => ({ axiomId: a.axiomId, body: a.body, similarity: Math.round(jaccardSim(input.queryText, a.body) * 1000) / 1000 }))
|
|
364
|
+
.filter((r) => r.similarity >= minSim)
|
|
365
|
+
.sort((a, b) => b.similarity - a.similarity)
|
|
366
|
+
.slice(0, k);
|
|
367
|
+
return {
|
|
368
|
+
v: PROTOCOL_VERSION,
|
|
369
|
+
queryText: input.queryText,
|
|
370
|
+
attractedAxioms: ranked,
|
|
371
|
+
builtAt: new Date().toISOString(),
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
// ── Verification / introspection ────────────────────────────────────
|
|
375
|
+
verifyClaim(c) {
|
|
376
|
+
const { sig, ...body } = c;
|
|
377
|
+
return safeEqHex(hmac(body, this.secret), sig);
|
|
378
|
+
}
|
|
379
|
+
verifyVerdict(v) {
|
|
380
|
+
const { sig, ...body } = v;
|
|
381
|
+
return safeEqHex(hmac(body, this.secret), sig);
|
|
382
|
+
}
|
|
383
|
+
verifyAxiom(a) {
|
|
384
|
+
const { sig, ...body } = a;
|
|
385
|
+
return safeEqHex(hmac(body, this.secret), sig);
|
|
386
|
+
}
|
|
387
|
+
verifyRewind(r) {
|
|
388
|
+
const { sig, ...body } = r;
|
|
389
|
+
return safeEqHex(hmac(body, this.secret), sig);
|
|
390
|
+
}
|
|
391
|
+
/** Verify the pending claim chain + axiom chain integrity. */
|
|
392
|
+
verifyChain() {
|
|
393
|
+
// Pending chain (in propose order)
|
|
394
|
+
for (let i = 0; i < this.pendingChainOrder.length; i++) {
|
|
395
|
+
const id = this.pendingChainOrder[i];
|
|
396
|
+
const c = this.pending.get(id);
|
|
397
|
+
if (!c)
|
|
398
|
+
continue; // crystallized / deprecated — skip
|
|
399
|
+
if (!this.verifyClaim(c))
|
|
400
|
+
return { ok: false, brokenAt: id, reason: "pending sig mismatch" };
|
|
401
|
+
if (i === 0) {
|
|
402
|
+
if (c.prevSig !== GENESIS_SIG)
|
|
403
|
+
return { ok: false, brokenAt: id, reason: "pending genesis wrong" };
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
// walk back to find the previous still-present (or original chain) sig
|
|
407
|
+
// For simplicity, require the immediately-previous pending in chain order.
|
|
408
|
+
const prevId = this.pendingChainOrder[i - 1];
|
|
409
|
+
const prev = this.pending.get(prevId);
|
|
410
|
+
// Skip prevSig check when previous claim has been removed (deprecated/axiom).
|
|
411
|
+
if (prev && c.prevSig !== prev.sig)
|
|
412
|
+
return { ok: false, brokenAt: id, reason: "pending chain link mismatch" };
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// Axiom chain
|
|
416
|
+
for (let i = 0; i < this.axioms.length; i++) {
|
|
417
|
+
const ax = this.axioms[i];
|
|
418
|
+
if (!this.verifyAxiom(ax))
|
|
419
|
+
return { ok: false, brokenAt: ax.axiomId, reason: "axiom sig mismatch" };
|
|
420
|
+
if (i === 0) {
|
|
421
|
+
if (ax.prevSig !== GENESIS_SIG)
|
|
422
|
+
return { ok: false, brokenAt: ax.axiomId, reason: "axiom genesis wrong" };
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
const prev = this.axioms[i - 1];
|
|
426
|
+
if (ax.prevSig !== prev.sig)
|
|
427
|
+
return { ok: false, brokenAt: ax.axiomId, reason: "axiom chain link mismatch" };
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return { ok: true };
|
|
431
|
+
}
|
|
432
|
+
summary() {
|
|
433
|
+
let vc = 0;
|
|
434
|
+
for (const list of this.verdicts.values())
|
|
435
|
+
vc += list.length;
|
|
436
|
+
return {
|
|
437
|
+
pendingCount: this.pending.size,
|
|
438
|
+
axiomCount: this.axioms.length,
|
|
439
|
+
deprecatedCount: this.deprecated.size,
|
|
440
|
+
rewindCount: this.rewinds.length,
|
|
441
|
+
verdictCount: vc,
|
|
442
|
+
chainOk: this.verifyChain().ok,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
status(claimId) {
|
|
446
|
+
if (this.deprecated.has(claimId))
|
|
447
|
+
return "deprecated";
|
|
448
|
+
if (this.pending.has(claimId))
|
|
449
|
+
return "pending";
|
|
450
|
+
if (this.axioms.some((a) => a.promotedFromClaimId === claimId || a.axiomId === claimId))
|
|
451
|
+
return "axiom";
|
|
452
|
+
return "pending"; // unknown → treat as not-yet-present-but-pending
|
|
453
|
+
}
|
|
454
|
+
/** Read-only views for inspection / testing. */
|
|
455
|
+
exportPending() { return Array.from(this.pending.values()); }
|
|
456
|
+
exportAxioms() { return this.axioms.slice(); }
|
|
457
|
+
exportRewinds() { return this.rewinds.slice(); }
|
|
458
|
+
exportVerdicts(claimId) { return (this.verdicts.get(claimId) ?? []).slice(); }
|
|
459
|
+
// ── Persistence ─────────────────────────────────────────────────────
|
|
460
|
+
persistAppend(path, record) {
|
|
461
|
+
try {
|
|
462
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
463
|
+
const line = JSON.stringify(record) + "\n";
|
|
464
|
+
if (existsSync(path)) {
|
|
465
|
+
const cur = readFileSync(path, "utf8");
|
|
466
|
+
writeFileSync(path, cur + line, "utf8");
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
writeFileSync(path, line, "utf8");
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
catch { /* best-effort */ }
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
export function formatClaimLine(c) {
|
|
476
|
+
return `⏳ PENDING · ${c.claimId} · deadline ${c.deadlineAt.slice(11, 19)} · ${c.body.slice(0, 60)}`;
|
|
477
|
+
}
|
|
478
|
+
export function formatAxiomLine(a) {
|
|
479
|
+
return `🪐 AXIOM · ${a.axiomId} · survived ${Math.round(a.crystallizedAfterMs / 1000)}s · ${a.body.slice(0, 60)}`;
|
|
480
|
+
}
|
|
481
|
+
export function formatRewindLine(r) {
|
|
482
|
+
return `↩️ REWIND · ${r.rewindId} · ${r.deprecatedClaimIds.length} claim(s) deprecated · ${r.reason.slice(0, 80)}`;
|
|
483
|
+
}
|
|
484
|
+
/** Process-local singleton. */
|
|
485
|
+
let _instance = null;
|
|
486
|
+
export function defaultChronostasis() {
|
|
487
|
+
if (!_instance)
|
|
488
|
+
_instance = new Chronostasis();
|
|
489
|
+
return _instance;
|
|
490
|
+
}
|
|
491
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chronostasis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation_compiler.test.d.ts","sourceRoot":"","sources":["../../src/conversation_compiler/conversation_compiler.test.ts"],"names":[],"mappings":""}
|