@mneme-ai/core 2.3.1 → 2.4.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.
Files changed (159) hide show
  1. package/dist/aegis/consent_kernel.d.ts.map +1 -1
  2. package/dist/aegis/consent_kernel.js +6 -3
  3. package/dist/aegis/consent_kernel.js.map +1 -1
  4. package/dist/aegis/killswitch.d.ts.map +1 -1
  5. package/dist/aegis/killswitch.js +3 -1
  6. package/dist/aegis/killswitch.js.map +1 -1
  7. package/dist/agent_manifest.d.ts.map +1 -1
  8. package/dist/agent_manifest.js +9 -4
  9. package/dist/agent_manifest.js.map +1 -1
  10. package/dist/anchor/pole_id.d.ts.map +1 -1
  11. package/dist/anchor/pole_id.js +10 -2
  12. package/dist/anchor/pole_id.js.map +1 -1
  13. package/dist/apoptosis/witnesses.d.ts.map +1 -1
  14. package/dist/apoptosis/witnesses.js +8 -11
  15. package/dist/apoptosis/witnesses.js.map +1 -1
  16. package/dist/audit/merkle-chain.d.ts.map +1 -1
  17. package/dist/audit/merkle-chain.js +2 -1
  18. package/dist/audit/merkle-chain.js.map +1 -1
  19. package/dist/aura/pair_payload.d.ts.map +1 -1
  20. package/dist/aura/pair_payload.js +2 -1
  21. package/dist/aura/pair_payload.js.map +1 -1
  22. package/dist/autoboot/install_linux.d.ts +0 -1
  23. package/dist/autoboot/install_linux.d.ts.map +1 -1
  24. package/dist/autoboot/install_linux.js +37 -39
  25. package/dist/autoboot/install_linux.js.map +1 -1
  26. package/dist/autoboot/install_macos.d.ts +0 -1
  27. package/dist/autoboot/install_macos.d.ts.map +1 -1
  28. package/dist/autoboot/install_macos.js +43 -34
  29. package/dist/autoboot/install_macos.js.map +1 -1
  30. package/dist/autoboot/install_windows.d.ts +0 -1
  31. package/dist/autoboot/install_windows.d.ts.map +1 -1
  32. package/dist/autoboot/install_windows.js +25 -24
  33. package/dist/autoboot/install_windows.js.map +1 -1
  34. package/dist/avatar/gossip_mesh.d.ts.map +1 -1
  35. package/dist/avatar/gossip_mesh.js +2 -1
  36. package/dist/avatar/gossip_mesh.js.map +1 -1
  37. package/dist/avatar/replicating_wisdom.d.ts.map +1 -1
  38. package/dist/avatar/replicating_wisdom.js +2 -1
  39. package/dist/avatar/replicating_wisdom.js.map +1 -1
  40. package/dist/covenant/covenant.d.ts.map +1 -1
  41. package/dist/covenant/covenant.js +3 -1
  42. package/dist/covenant/covenant.js.map +1 -1
  43. package/dist/diaspora/session_capsule.d.ts.map +1 -1
  44. package/dist/diaspora/session_capsule.js +2 -1
  45. package/dist/diaspora/session_capsule.js.map +1 -1
  46. package/dist/evolve/synthesis/lineage.d.ts.map +1 -1
  47. package/dist/evolve/synthesis/lineage.js +2 -1
  48. package/dist/evolve/synthesis/lineage.js.map +1 -1
  49. package/dist/evolve/synthesis/synthesize.d.ts.map +1 -1
  50. package/dist/evolve/synthesis/synthesize.js +3 -1
  51. package/dist/evolve/synthesis/synthesize.js.map +1 -1
  52. package/dist/exodus/wanderer.d.ts.map +1 -1
  53. package/dist/exodus/wanderer.js +2 -1
  54. package/dist/exodus/wanderer.js.map +1 -1
  55. package/dist/genesplice/soul_prompt.d.ts.map +1 -1
  56. package/dist/genesplice/soul_prompt.js +16 -4
  57. package/dist/genesplice/soul_prompt.js.map +1 -1
  58. package/dist/index.d.ts +1 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +9 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/interstellar/index.d.ts.map +1 -1
  63. package/dist/interstellar/index.js +2 -1
  64. package/dist/interstellar/index.js.map +1 -1
  65. package/dist/lexicon/index.d.ts +1 -0
  66. package/dist/lexicon/index.d.ts.map +1 -1
  67. package/dist/lexicon/index.js +22 -0
  68. package/dist/lexicon/index.js.map +1 -1
  69. package/dist/lexicon/writer_routing.test.d.ts +2 -0
  70. package/dist/lexicon/writer_routing.test.d.ts.map +1 -0
  71. package/dist/lexicon/writer_routing.test.js +22 -0
  72. package/dist/lexicon/writer_routing.test.js.map +1 -0
  73. package/dist/living_will/index.d.ts.map +1 -1
  74. package/dist/living_will/index.js +2 -1
  75. package/dist/living_will/index.js.map +1 -1
  76. package/dist/parasite/bridge.d.ts.map +1 -1
  77. package/dist/parasite/bridge.js +10 -3
  78. package/dist/parasite/bridge.js.map +1 -1
  79. package/dist/precog/trust_certificate.d.ts.map +1 -1
  80. package/dist/precog/trust_certificate.js +2 -1
  81. package/dist/precog/trust_certificate.js.map +1 -1
  82. package/dist/prophecy/index.d.ts.map +1 -1
  83. package/dist/prophecy/index.js +2 -1
  84. package/dist/prophecy/index.js.map +1 -1
  85. package/dist/pulse.d.ts.map +1 -1
  86. package/dist/pulse.js +18 -4
  87. package/dist/pulse.js.map +1 -1
  88. package/dist/rainbow/passport.d.ts.map +1 -1
  89. package/dist/rainbow/passport.js +2 -1
  90. package/dist/rainbow/passport.js.map +1 -1
  91. package/dist/reactor/reactor_modules.d.ts.map +1 -1
  92. package/dist/reactor/reactor_modules.js +2 -1
  93. package/dist/reactor/reactor_modules.js.map +1 -1
  94. package/dist/security/audit-log.d.ts.map +1 -1
  95. package/dist/security/audit-log.js +4 -2
  96. package/dist/security/audit-log.js.map +1 -1
  97. package/dist/sentinel/audit_ledger.d.ts.map +1 -1
  98. package/dist/sentinel/audit_ledger.js +2 -1
  99. package/dist/sentinel/audit_ledger.js.map +1 -1
  100. package/dist/symbiosis/fusion.d.ts +46 -0
  101. package/dist/symbiosis/fusion.d.ts.map +1 -0
  102. package/dist/symbiosis/fusion.js +62 -0
  103. package/dist/symbiosis/fusion.js.map +1 -0
  104. package/dist/symbiosis/index.d.ts +25 -0
  105. package/dist/symbiosis/index.d.ts.map +1 -0
  106. package/dist/symbiosis/index.js +25 -0
  107. package/dist/symbiosis/index.js.map +1 -0
  108. package/dist/symbiosis/intent.d.ts +28 -0
  109. package/dist/symbiosis/intent.d.ts.map +1 -0
  110. package/dist/symbiosis/intent.js +63 -0
  111. package/dist/symbiosis/intent.js.map +1 -0
  112. package/dist/symbiosis/ledger.d.ts +54 -0
  113. package/dist/symbiosis/ledger.d.ts.map +1 -0
  114. package/dist/symbiosis/ledger.js +95 -0
  115. package/dist/symbiosis/ledger.js.map +1 -0
  116. package/dist/symbiosis/symbiosis.test.d.ts +2 -0
  117. package/dist/symbiosis/symbiosis.test.d.ts.map +1 -0
  118. package/dist/symbiosis/symbiosis.test.js +155 -0
  119. package/dist/symbiosis/symbiosis.test.js.map +1 -0
  120. package/dist/symbiosis/voice.d.ts +50 -0
  121. package/dist/symbiosis/voice.d.ts.map +1 -0
  122. package/dist/symbiosis/voice.js +121 -0
  123. package/dist/symbiosis/voice.js.map +1 -0
  124. package/dist/util/hmac_compare.d.ts +27 -0
  125. package/dist/util/hmac_compare.d.ts.map +1 -0
  126. package/dist/util/hmac_compare.js +43 -0
  127. package/dist/util/hmac_compare.js.map +1 -0
  128. package/dist/util/hmac_compare.test.d.ts +2 -0
  129. package/dist/util/hmac_compare.test.d.ts.map +1 -0
  130. package/dist/util/hmac_compare.test.js +30 -0
  131. package/dist/util/hmac_compare.test.js.map +1 -0
  132. package/dist/util/prompt_sanitize.d.ts +38 -0
  133. package/dist/util/prompt_sanitize.d.ts.map +1 -0
  134. package/dist/util/prompt_sanitize.js +78 -0
  135. package/dist/util/prompt_sanitize.js.map +1 -0
  136. package/dist/util/prompt_sanitize.test.d.ts +2 -0
  137. package/dist/util/prompt_sanitize.test.d.ts.map +1 -0
  138. package/dist/util/prompt_sanitize.test.js +58 -0
  139. package/dist/util/prompt_sanitize.test.js.map +1 -0
  140. package/dist/util/safe_exec.d.ts +66 -0
  141. package/dist/util/safe_exec.d.ts.map +1 -0
  142. package/dist/util/safe_exec.js +106 -0
  143. package/dist/util/safe_exec.js.map +1 -0
  144. package/dist/util/safe_exec.test.d.ts +2 -0
  145. package/dist/util/safe_exec.test.d.ts.map +1 -0
  146. package/dist/util/safe_exec.test.js +0 -0
  147. package/dist/util/safe_exec.test.js.map +1 -0
  148. package/dist/util/secret_store.d.ts +38 -0
  149. package/dist/util/secret_store.d.ts.map +1 -0
  150. package/dist/util/secret_store.js +100 -0
  151. package/dist/util/secret_store.js.map +1 -0
  152. package/dist/util/secret_store.test.d.ts +2 -0
  153. package/dist/util/secret_store.test.d.ts.map +1 -0
  154. package/dist/util/secret_store.test.js +54 -0
  155. package/dist/util/secret_store.test.js.map +1 -0
  156. package/dist/wisdom_shards/index.d.ts.map +1 -1
  157. package/dist/wisdom_shards/index.js +2 -1
  158. package/dist/wisdom_shards/index.js.map +1 -1
  159. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_exec.test.d.ts","sourceRoot":"","sources":["../../src/util/safe_exec.test.ts"],"names":[],"mappings":""}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_exec.test.js","sourceRoot":"","sources":["../../src/util/safe_exec.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * v2.4.0 -- SECRET STORE. Root-cause fix for the plaintext-HMAC-secret
3
+ * class. Every long-lived secret Mneme writes to disk MUST go through
4
+ * this helper so it lands as 0600 (owner-read-only) on Unix and with
5
+ * restricted ACL on Windows.
6
+ *
7
+ * Why this exists:
8
+ * - An external audit found that pole-secret.json (used to sign rope
9
+ * tokens), and similar HMAC-secret files, were being written with
10
+ * the Node fs default mode — 0644 on Unix. Any unprivileged user
11
+ * on the same machine could read them, forge tokens, and bypass
12
+ * covenant / killswitch / passport / soul-prompt verification.
13
+ * - The fix is structural: replace every direct `writeFileSync(secret)`
14
+ * call with `writeSecretFile(...)`. Future leaks become impossible.
15
+ *
16
+ * Contract:
17
+ * - File written with mode 0600 on POSIX. icacls invoked on Windows
18
+ * to remove inherited permissions and grant access only to the
19
+ * current user. If the icacls call fails (e.g., FAT32 volume), the
20
+ * helper logs a warning to stderr and continues, since the file is
21
+ * still less-readable than the previous default.
22
+ * - Parent directory is created if missing (also chmod 0700 on POSIX).
23
+ * - Atomicity: write-then-rename via a sibling temp file so a partial
24
+ * write never leaves a half-written secret on disk.
25
+ */
26
+ export interface SecretWriteOptions {
27
+ /** Optional override of the file mode (POSIX). Default 0600. */
28
+ modePosix?: number;
29
+ /** Optional override of the directory mode (POSIX). Default 0700. */
30
+ dirModePosix?: number;
31
+ /** When true, skips the Windows ACL step (used by tests). */
32
+ skipWindowsAcl?: boolean;
33
+ }
34
+ /** Write a secret file securely. Returns the absolute path written. */
35
+ export declare function writeSecretFile(path: string, content: string | Buffer, opts?: SecretWriteOptions): string;
36
+ /** Convenience: write JSON.stringify(obj) as a secret. */
37
+ export declare function writeSecretJson(path: string, obj: unknown, opts?: SecretWriteOptions): string;
38
+ //# sourceMappingURL=secret_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret_store.d.ts","sourceRoot":"","sources":["../../src/util/secret_store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AASH,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAiBD,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAsC7G;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAEjG"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * v2.4.0 -- SECRET STORE. Root-cause fix for the plaintext-HMAC-secret
3
+ * class. Every long-lived secret Mneme writes to disk MUST go through
4
+ * this helper so it lands as 0600 (owner-read-only) on Unix and with
5
+ * restricted ACL on Windows.
6
+ *
7
+ * Why this exists:
8
+ * - An external audit found that pole-secret.json (used to sign rope
9
+ * tokens), and similar HMAC-secret files, were being written with
10
+ * the Node fs default mode — 0644 on Unix. Any unprivileged user
11
+ * on the same machine could read them, forge tokens, and bypass
12
+ * covenant / killswitch / passport / soul-prompt verification.
13
+ * - The fix is structural: replace every direct `writeFileSync(secret)`
14
+ * call with `writeSecretFile(...)`. Future leaks become impossible.
15
+ *
16
+ * Contract:
17
+ * - File written with mode 0600 on POSIX. icacls invoked on Windows
18
+ * to remove inherited permissions and grant access only to the
19
+ * current user. If the icacls call fails (e.g., FAT32 volume), the
20
+ * helper logs a warning to stderr and continues, since the file is
21
+ * still less-readable than the previous default.
22
+ * - Parent directory is created if missing (also chmod 0700 on POSIX).
23
+ * - Atomicity: write-then-rename via a sibling temp file so a partial
24
+ * write never leaves a half-written secret on disk.
25
+ */
26
+ import { existsSync, mkdirSync, writeFileSync, renameSync, chmodSync } from "node:fs";
27
+ import { dirname } from "node:path";
28
+ import { platform } from "node:os";
29
+ import { safeExecTry } from "./safe_exec.js";
30
+ const IS_WINDOWS = platform() === "win32";
31
+ /** Lock a Windows file's ACL down to the current user.
32
+ * Best-effort: a failure here doesn't abort the write.
33
+ * Implementation: `icacls path /inheritance:r /grant:r %USERNAME%:F`. */
34
+ function lockdownWindowsAcl(path) {
35
+ const user = process.env["USERNAME"];
36
+ if (!user)
37
+ return { ok: false, reason: "no USERNAME env" };
38
+ // Strip inherited ACEs first.
39
+ const strip = safeExecTry("icacls", [path, "/inheritance:r"], { timeoutMs: 5000 });
40
+ if (!strip || strip.status !== 0)
41
+ return { ok: false, reason: "icacls /inheritance:r failed" };
42
+ // Grant the current user full access — and nobody else.
43
+ const grant = safeExecTry("icacls", [path, "/grant:r", `${user}:F`], { timeoutMs: 5000 });
44
+ if (!grant || grant.status !== 0)
45
+ return { ok: false, reason: "icacls /grant failed" };
46
+ return { ok: true };
47
+ }
48
+ /** Write a secret file securely. Returns the absolute path written. */
49
+ export function writeSecretFile(path, content, opts = {}) {
50
+ const dir = dirname(path);
51
+ const fileMode = opts.modePosix ?? 0o600;
52
+ const dirMode = opts.dirModePosix ?? 0o700;
53
+ if (!existsSync(dir)) {
54
+ mkdirSync(dir, { recursive: true });
55
+ if (!IS_WINDOWS) {
56
+ try {
57
+ chmodSync(dir, dirMode);
58
+ }
59
+ catch { /* best-effort */ }
60
+ }
61
+ }
62
+ // Write to a temp sibling first, then atomically rename. Ensures we
63
+ // never leave a partial-content secret on disk if the process dies
64
+ // mid-write.
65
+ const tmpPath = `${path}.tmp-${process.pid}-${Date.now()}`;
66
+ writeFileSync(tmpPath, content, { mode: fileMode });
67
+ try {
68
+ renameSync(tmpPath, path);
69
+ }
70
+ catch (e) {
71
+ try {
72
+ writeFileSync(path, content, { mode: fileMode });
73
+ }
74
+ catch { /* */ }
75
+ throw e;
76
+ }
77
+ // Re-assert the mode after rename — some filesystems mask the create
78
+ // mode through umask, so an explicit chmod is the only guarantee on POSIX.
79
+ if (!IS_WINDOWS) {
80
+ try {
81
+ chmodSync(path, fileMode);
82
+ }
83
+ catch { /* best-effort */ }
84
+ }
85
+ else if (!opts.skipWindowsAcl) {
86
+ const r = lockdownWindowsAcl(path);
87
+ if (!r.ok) {
88
+ // Don't crash; surface a warning. Users on FAT32 / network shares
89
+ // may legitimately not have ACL support.
90
+ // eslint-disable-next-line no-console
91
+ console.warn(`[mneme:secret_store] Windows ACL lockdown skipped for ${path}: ${r.reason}`);
92
+ }
93
+ }
94
+ return path;
95
+ }
96
+ /** Convenience: write JSON.stringify(obj) as a secret. */
97
+ export function writeSecretJson(path, obj, opts = {}) {
98
+ return writeSecretFile(path, JSON.stringify(obj, null, 2), opts);
99
+ }
100
+ //# sourceMappingURL=secret_store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret_store.js","sourceRoot":"","sources":["../../src/util/secret_store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=secret_store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret_store.test.d.ts","sourceRoot":"","sources":["../../src/util/secret_store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { mkdtempSync, statSync, readFileSync, existsSync } from "node:fs";
3
+ import { tmpdir, platform } from "node:os";
4
+ import { join } from "node:path";
5
+ import { writeSecretFile, writeSecretJson } from "./secret_store.js";
6
+ const IS_WINDOWS = platform() === "win32";
7
+ describe("v2.4 SECRET STORE", () => {
8
+ it("writeSecretFile writes content correctly", () => {
9
+ const dir = mkdtempSync(join(tmpdir(), "mneme-secret-test-"));
10
+ const target = join(dir, "secret.txt");
11
+ writeSecretFile(target, "supersecret123");
12
+ expect(readFileSync(target, "utf8")).toBe("supersecret123");
13
+ });
14
+ it("writeSecretFile lands at mode 0600 on POSIX", () => {
15
+ if (IS_WINDOWS)
16
+ return; // POSIX-only assertion
17
+ const dir = mkdtempSync(join(tmpdir(), "mneme-secret-test-"));
18
+ const target = join(dir, "secret.txt");
19
+ writeSecretFile(target, "x");
20
+ const m = statSync(target).mode & 0o777;
21
+ expect(m).toBe(0o600);
22
+ });
23
+ it("writeSecretFile creates parent dir if missing", () => {
24
+ const dir = mkdtempSync(join(tmpdir(), "mneme-secret-test-"));
25
+ const target = join(dir, "nested", "deeper", "secret.txt");
26
+ writeSecretFile(target, "x");
27
+ expect(existsSync(target)).toBe(true);
28
+ });
29
+ it("writeSecretFile overwrites existing file atomically", () => {
30
+ const dir = mkdtempSync(join(tmpdir(), "mneme-secret-test-"));
31
+ const target = join(dir, "secret.txt");
32
+ writeSecretFile(target, "first");
33
+ writeSecretFile(target, "second");
34
+ expect(readFileSync(target, "utf8")).toBe("second");
35
+ });
36
+ it("writeSecretJson serializes and writes", () => {
37
+ const dir = mkdtempSync(join(tmpdir(), "mneme-secret-test-"));
38
+ const target = join(dir, "secret.json");
39
+ writeSecretJson(target, { key: "value", n: 42 });
40
+ const parsed = JSON.parse(readFileSync(target, "utf8"));
41
+ expect(parsed.key).toBe("value");
42
+ expect(parsed.n).toBe(42);
43
+ });
44
+ it("custom mode override is honored on POSIX", () => {
45
+ if (IS_WINDOWS)
46
+ return;
47
+ const dir = mkdtempSync(join(tmpdir(), "mneme-secret-test-"));
48
+ const target = join(dir, "secret.txt");
49
+ writeSecretFile(target, "x", { modePosix: 0o400 });
50
+ const m = statSync(target).mode & 0o777;
51
+ expect(m).toBe(0o400);
52
+ });
53
+ });
54
+ //# sourceMappingURL=secret_store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret_store.test.js","sourceRoot":"","sources":["../../src/util/secret_store.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wisdom_shards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,oBAAoB;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;CACxB;AAWD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAYrF;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAQvD;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAiB7E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wisdom_shards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,UAAU;IACzB,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,oBAAoB;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;CACxB;AAWD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAYrF;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAQvD;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAiB7E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D"}
@@ -10,6 +10,7 @@
10
10
  * for v2.1 we ship the local ledger that any federation can adopt.
11
11
  */
12
12
  import { createHmac, createHash, randomBytes } from "node:crypto";
13
+ import { safeHmacNotEqual } from "../util/hmac_compare.js";
13
14
  function fpSecret(secret) {
14
15
  return createHash("sha256").update(secret).digest("hex").slice(0, 16);
15
16
  }
@@ -55,7 +56,7 @@ export function verifyChain(ledger, secret) {
55
56
  const { chainHash: _h, ...rest } = e;
56
57
  void _h;
57
58
  const expected = chainOf(prevHash, rest, secret);
58
- if (expected !== e.chainHash) {
59
+ if (safeHmacNotEqual(expected, e.chainHash)) {
59
60
  return { verdict: "BROKEN", reason: `chain hash mismatch at entry ${e.id} (index ${i})`, firstBrokenIndex: i };
60
61
  }
61
62
  prevHash = e.chainHash;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wisdom_shards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyBlE,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,OAAO,CAAC,QAAgB,EAAE,gBAA+C,EAAE,MAAc;IAChG,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3G,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3D,CAAC;AAWD,MAAM,UAAU,WAAW,CAAC,KAAkB;IAC5C,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,WAAW,GAAkC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACpJ,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAe,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,CAAC;IACxD,MAAM,MAAM,GAAW,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACtF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AASD,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC;;YACzC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC7G,CAAC;AAWD,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,MAAc;IACxD,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,cAAc,EAAE,CAAC;QAC/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,yDAAyD,EAAE,CAAC;IACrG,CAAC;IACD,iEAAiE;IACjE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC;QACR,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;QACjH,CAAC;QACD,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,UAAU,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,2BAA2B,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,WAAW,YAAY,CAAC,CAAC,WAAW,OAAO,CAAC,CAAC,UAAU,UAAU,CAAC;AAC7H,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wisdom_shards/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/core",
3
- "version": "2.3.1",
3
+ "version": "2.4.0",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",