mneme-ai 2.198.0 → 2.200.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.
@@ -21,6 +21,7 @@ export interface HeartbeatReport {
21
21
  axioms: number;
22
22
  reclaimedBytes: number;
23
23
  };
24
+ cortexFed: number;
24
25
  verify: {
25
26
  attest: boolean;
26
27
  warm: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/commands/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IACzE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,eAAe,CA8B3E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAahE"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/commands/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IACzE,aAAa,EAAE,MAAM,CAAC;CACvB;AA2BD,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,eAAe,CAiC3E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAahE"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { geo, commitAttest, awarm, notary } from "@mneme-ai/core";
3
+ import { geo, commitAttest, awarm, notary, cortex } from "@mneme-ai/core";
4
4
  function out(s) { process.stdout.write(s + "\n"); }
5
5
  const readJsonl = (p) => existsSync(p) ? readFileSync(p, "utf8").trim().split("\n").filter(Boolean).map((l) => { try {
6
6
  return JSON.parse(l);
@@ -14,8 +14,51 @@ const readJson = (p, fallback) => { try {
14
14
  catch {
15
15
  return fallback;
16
16
  } };
17
+ /** Ingest the REAL shared memory (cortex active facts) into geo so it metamorphoses with
18
+ * age — old cortex memory dissolves to signed abstract→axiom + purges its raw. Deduped. */
19
+ function feedGeoFromCortex(cwd) {
20
+ const cp = join(cwd, ".mneme", "cortex", "store.json");
21
+ if (!existsSync(cp))
22
+ return 0;
23
+ let store;
24
+ try {
25
+ store = JSON.parse(readFileSync(cp, "utf8"));
26
+ }
27
+ catch {
28
+ return 0;
29
+ }
30
+ if (!store || !Array.isArray(store.entries))
31
+ return 0;
32
+ const gp = join(cwd, ".mneme", "geo", "state.json");
33
+ let g = readJson(gp, geo.emptyGeo());
34
+ const have = new Set(g.cells.map((c) => c.id));
35
+ let added = 0;
36
+ try {
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ const active = cortex.activeView(store);
39
+ for (const e of active.values()) {
40
+ const id = `cortex:${e.key}`;
41
+ if (have.has(id) || !e.value)
42
+ continue;
43
+ g = geo.seedRaw(g, { id, raw: String(e.value), ts: Number(e.at) || Date.now() });
44
+ have.add(id);
45
+ added++;
46
+ }
47
+ }
48
+ catch { /* */ }
49
+ if (added) {
50
+ try {
51
+ mkdirSync(join(cwd, ".mneme", "geo"), { recursive: true });
52
+ writeFileSync(gp, JSON.stringify(g), "utf8");
53
+ }
54
+ catch { /* */ }
55
+ }
56
+ return added;
57
+ }
17
58
  /** Run ONE self-maintenance beat. Total + idempotent + safe (no rule rewrite, no kill). */
18
59
  export function runHeartbeat(cwd, now = Date.now()) {
60
+ // 0) FEED geo from the REAL shared memory (cortex) so it recycles actual memory
61
+ const cortexFed = feedGeoFromCortex(cwd);
19
62
  // 1) METAMORPHOSE memory (geo)
20
63
  const gp = join(cwd, ".mneme", "geo", "state.json");
21
64
  const gBefore = geo.geoStats(readJson(gp, geo.emptyGeo()));
@@ -37,6 +80,7 @@ export function runHeartbeat(cwd, now = Date.now()) {
37
80
  const report = {
38
81
  ranAt: now,
39
82
  geo: { rawBefore: gBefore.raw, rawAfter: gStats.raw, axioms: gStats.axiom, reclaimedBytes: gStats.rawBytesReclaimed },
83
+ cortexFed,
40
84
  verify: { attest: attestOk, warm: warmOk, geo: geoOk, allOk },
41
85
  };
42
86
  let evolutionHash = "";
@@ -53,7 +97,7 @@ export function registerHeartbeatCommands(program) {
53
97
  const h = program.command("upkeep").description("💓 SELF-MAINTAINING PULSE — one safe, signed maintenance beat: metamorphose memory + re-verify every ledger + sign an evolution snapshot. The daemon runs this on idle. (It self-maintains, NOT self-rewrites-its-rules.)");
54
98
  h.command("run", { isDefault: true }).description("Run one beat now.").action(() => {
55
99
  const r = runHeartbeat(process.cwd());
56
- out(`💓 beat · geo raw ${r.geo.rawBefore}→${r.geo.rawAfter} · ${r.geo.axioms} axiom(s) · ${r.geo.reclaimedBytes}b reclaimed`);
100
+ out(`💓 beat · ${r.cortexFed} cortex memories ingested · geo raw ${r.geo.rawBefore}→${r.geo.rawAfter} · ${r.geo.axioms} axiom(s) · ${r.geo.reclaimedBytes}b reclaimed`);
57
101
  out(` ledgers verified: attest ${r.verify.attest ? "✓" : "✗"} · warm ${r.verify.warm ? "✓" : "✗"} · geo ${r.verify.geo ? "✓" : "✗"}${r.verify.allOk ? "" : " ⚠ TAMPER/DRIFT — investigate"}`);
58
102
  out(` signed evolution snapshot: ${r.evolutionHash.slice(0, 16) || "(unsigned)"}`);
59
103
  });
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/commands/heartbeat.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElE,SAAS,GAAG,CAAC,CAAS,IAAU,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,CAAI,CAAS,EAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,IAAI,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1N,MAAM,QAAQ,GAAG,CAAI,CAAS,EAAE,QAAW,EAAK,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,QAAQ,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC;AAStK,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACxD,+BAA+B;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAe,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAe,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,CAAC;QAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACtI,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpC,2CAA2C;IAC3C,MAAM,WAAW,GAAG,SAAS,CAA2B,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,UAAU,GAAG,SAAS,CAAkB,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC;IAE1C,oFAAoF;IACpF,MAAM,MAAM,GAA2C;QACrD,KAAK,EAAE,GAAG;QACV,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE;QACrH,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;KAC9D,CAAC;IACF,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAA2B,CAAC;QACjL,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACxC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5H,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2NAA2N,CAAC,CAAC;IAC7Q,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QACjF,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,eAAe,CAAC,CAAC,GAAG,CAAC,cAAc,aAAa,CAAC,CAAC;QAC9H,GAAG,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAAC,CAAC;QACjM,GAAG,CAAC,iCAAiC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QACtF,MAAM,IAAI,GAAG,QAAQ,CAAqF,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7K,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC5G,GAAG,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC5L,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/commands/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `mneme reckon <commit>` (v2.199.0) — the signed accountability dossier.
3
+ * Assembles the signed evidence (attestation · secret-screen · engagement policy ·
4
+ * survival) for a commit into a verdict — EXONERATED / ACCOUNTABLE / INSUFFICIENT —
5
+ * signed (NOTARY) so a court/auditor/insurer verifies it offline. The permanent record
6
+ * as a shield, not a threat.
7
+ */
8
+ import type { Command } from "commander";
9
+ export declare function registerReckonCommands(program: Command): void;
10
+ //# sourceMappingURL=reckon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reckon.d.ts","sourceRoot":"","sources":["../../src/commands/reckon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB7D"}
@@ -0,0 +1,76 @@
1
+ import { execSync } from "node:child_process";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { reckoning, commitAttest, engagement, notary } from "@mneme-ai/core";
5
+ function out(s) { process.stdout.write(s + "\n"); }
6
+ function git(args, cwd) { try {
7
+ return execSync(`git ${args.join(" ")}`, { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim();
8
+ }
9
+ catch {
10
+ return "";
11
+ } }
12
+ function gatherEvidence(cwd, ref) {
13
+ const sha = git(["rev-parse", ref], cwd) || ref;
14
+ // attestation
15
+ let attested = false, attestVerified = false, secretsClean = true;
16
+ const ap = join(cwd, ".mneme", "attest", "chain.jsonl");
17
+ if (existsSync(ap)) {
18
+ try {
19
+ for (const l of readFileSync(ap, "utf8").trim().split("\n").filter(Boolean)) {
20
+ const e = JSON.parse(l);
21
+ if (e.record?.subject === `commit:${sha}`) {
22
+ attested = true;
23
+ attestVerified = commitAttest.verifyAttest(e).valid;
24
+ secretsClean = Number(e.facts?.addedSecrets ?? 0) === 0;
25
+ break;
26
+ }
27
+ }
28
+ }
29
+ catch { /* */ }
30
+ }
31
+ // engagement: evaluate the commit's files against the repo policy
32
+ let policy = engagement.defaultPolicy();
33
+ const pp = join(cwd, ".mneme", "engagement.json");
34
+ if (existsSync(pp)) {
35
+ try {
36
+ policy = { ...policy, ...JSON.parse(readFileSync(pp, "utf8")) };
37
+ }
38
+ catch { /* */ }
39
+ }
40
+ const files = git(["show", "--name-only", "--format=", sha], cwd).split("\n").map((s) => s.trim()).filter(Boolean);
41
+ const eng = engagement.evaluateEngagement(policy, { kind: "write", paths: files, fileCount: files.length });
42
+ // survival: was it explicitly reverted later? (the reliable signed-message signal)
43
+ const reverted = !!git(["log", "--all", `--grep=This reverts commit ${sha}`, "--oneline"], cwd);
44
+ return { subject: sha, attested, attestVerified, secretsClean, engagement: eng.decision, cosigned: false, customsClean: true, reverted };
45
+ }
46
+ export function registerReckonCommands(program) {
47
+ program.command("reckon [commit]").description("⚖️ ACCOUNTABILITY DOSSIER — assemble the signed evidence for a commit into a verdict (EXONERATED / ACCOUNTABLE / INSUFFICIENT), signed + offline-verifiable. The permanent record as a shield.")
48
+ .option("--json", "the full signed dossier")
49
+ .action((commit, opts) => {
50
+ const cwd = process.cwd();
51
+ if (!existsSync(join(cwd, ".git"))) {
52
+ out("not a git repo");
53
+ process.exitCode = 2;
54
+ return;
55
+ }
56
+ const ev = gatherEvidence(cwd, commit ?? "HEAD");
57
+ const r = reckoning.buildReckoning(ev);
58
+ let receipt = null;
59
+ try {
60
+ receipt = notary.issueReceipt(cwd, { kind: "claim-verdict", subject: `reckon:${ev.subject.slice(0, 12)}`, payload: r, includePayload: true });
61
+ }
62
+ catch { /* */ }
63
+ if (opts.json) {
64
+ out(JSON.stringify({ evidence: ev, reckoning: r, receipt }, null, 2));
65
+ return;
66
+ }
67
+ const icon = r.verdict === "EXONERATED" ? "🟢" : r.verdict === "ACCOUNTABLE" ? "🔴" : "⚪";
68
+ out(`⚖️ Reckoning · ${ev.subject.slice(0, 10)} → ${icon} ${r.verdict}`);
69
+ for (const f of r.findings)
70
+ out(` ${f.severity === "violation" ? "✗" : f.severity === "clear" ? "✓" : "·"} ${f.text}`);
71
+ out(` ${receipt ? "signed — anyone can verify this verdict offline (mneme notary verify)" : "(unsigned)"}`);
72
+ if (r.verdict === "ACCOUNTABLE")
73
+ process.exitCode = 2;
74
+ });
75
+ }
76
+ //# sourceMappingURL=reckon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reckon.js","sourceRoot":"","sources":["../../src/commands/reckon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `mneme succession <agent>` (v2.200.0) — the no-brain-drain halt capsule.
3
+ * When an agent must be stopped (a loop thrash, a policy breach), distil its PROVEN
4
+ * wisdom (geo axioms + its reliability record) into a SIGNED capsule a successor inherits,
5
+ * referencing the signed proofs the toxic raw was purged. Mneme RECOMMENDS the halt + packages
6
+ * the moment; the host orchestrator enforces the actual stop.
7
+ */
8
+ import type { Command } from "commander";
9
+ export declare function registerSuccessionCommands(program: Command): void;
10
+ //# sourceMappingURL=succession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"succession.d.ts","sourceRoot":"","sources":["../../src/commands/succession.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BjE"}
@@ -0,0 +1,48 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { succession, geo, awarm, notary } from "@mneme-ai/core";
4
+ function out(s) { process.stdout.write(s + "\n"); }
5
+ const readJson = (p, fb) => { try {
6
+ return existsSync(p) ? JSON.parse(readFileSync(p, "utf8")) : fb;
7
+ }
8
+ catch {
9
+ return fb;
10
+ } };
11
+ export function registerSuccessionCommands(program) {
12
+ program.command("succession <agent>")
13
+ .description("⚱️ SUCCESSION CAPSULE — on halt, distil an agent's proven wisdom (geo axioms + reliability) into a signed capsule a successor inherits, with proof the toxic raw was purged. No brain-drain. Mneme recommends; the host enforces.")
14
+ .option("--reason <text>", "why the halt", "manual halt")
15
+ .option("--trigger <t>", "loopguard|overshoot|govern|reckon|manual", "manual")
16
+ .option("--json", "the full signed capsule")
17
+ .action((agent, opts) => {
18
+ const cwd = process.cwd();
19
+ // proven wisdom: geo axioms + the purge proofs that the raw is gone
20
+ const g = readJson(join(cwd, ".mneme", "geo", "state.json"), geo.emptyGeo());
21
+ const axioms = g.cells.filter((c) => c.tier === "axiom" && c.abstract).map((c) => c.abstract);
22
+ const purgeProofRefs = g.cells.filter((c) => c.purgeProof && c.rawHash).map((c) => `geo-purge:${c.rawHash.slice(0, 12)}`);
23
+ // reliability: the always-warm survival for this agent
24
+ const warm = readJson(join(cwd, ".mneme", "awarm", "state.json"), awarm.emptyState());
25
+ const wa = awarm.queryWarm(warm).agents.find((a) => a.agent === agent);
26
+ const reliability = wa ? { survivalPct: Math.round(wa.survivalRate * 100), band: wa.survivalRate >= 0.9 ? "solid" : wa.survivalRate >= 0.7 ? "watch" : "risky" } : null;
27
+ const capsule = succession.buildSuccessionCapsule({ agent, reason: opts.reason ?? "manual halt", trigger: opts.trigger ?? "manual", axioms, reliability, purgeProofRefs, ts: Date.now() });
28
+ let receipt = null;
29
+ try {
30
+ receipt = notary.issueReceipt(cwd, { kind: "memory-capsule", subject: `succession:${agent}`, payload: capsule, includePayload: true });
31
+ }
32
+ catch { /* */ }
33
+ try {
34
+ mkdirSync(join(cwd, ".mneme", "succession"), { recursive: true });
35
+ writeFileSync(join(cwd, ".mneme", "succession", `${agent.replace(/[^\w.-]/g, "_")}.json`), JSON.stringify({ capsule, receipt }, null, 2), "utf8");
36
+ }
37
+ catch { /* */ }
38
+ if (opts.json) {
39
+ out(JSON.stringify({ capsule, receipt }, null, 2));
40
+ return;
41
+ }
42
+ out(`⚱️ Succession capsule · ${agent} → 🛑 ${capsule.haltVerdict} (enforced by ${capsule.enforcedBy} — Mneme recommends, does not kill)`);
43
+ out(` inherited wisdom: ${capsule.wisdom.length} axiom(s)${reliability ? ` · predecessor reliability ${reliability.survivalPct}% (${reliability.band})` : ""}`);
44
+ out(` raw purged: ${purgeProofRefs.length} signed proof(s) — the toxic state is provably gone, the learning survives`);
45
+ out(` ${receipt ? "capsule signed — a successor inherits it; verify offline (mneme notary verify)" : "(unsigned)"}`);
46
+ });
47
+ }
48
+ //# sourceMappingURL=succession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"succession.js","sourceRoot":"","sources":["../../src/commands/succession.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuLA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAulNvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyLA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAylNvD"}
package/dist/index.js CHANGED
@@ -101,6 +101,8 @@ import { registerAccountabilityCommands } from "./commands/accountability.js";
101
101
  import { registerWarmCommands } from "./commands/warm.js";
102
102
  import { registerGeoCommands } from "./commands/geo.js";
103
103
  import { registerHeartbeatCommands } from "./commands/heartbeat.js";
104
+ import { registerReckonCommands } from "./commands/reckon.js";
105
+ import { registerSuccessionCommands } from "./commands/succession.js";
104
106
  import { registerAdamasCommands } from "./commands/adamas.js";
105
107
  import { registerPrismCommands } from "./commands/prism.js";
106
108
  import { registerGoldilocksCommands } from "./commands/goldilocks.js";
@@ -4769,6 +4771,8 @@ export async function run(argv) {
4769
4771
  registerWarmCommands(program);
4770
4772
  registerGeoCommands(program);
4771
4773
  registerHeartbeatCommands(program);
4774
+ registerReckonCommands(program);
4775
+ registerSuccessionCommands(program);
4772
4776
  registerAdamasCommands(program);
4773
4777
  registerPrismCommands(program);
4774
4778
  registerGoldilocksCommands(program);