@mneme-ai/core 1.79.0 → 1.81.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 (75) hide show
  1. package/dist/abyss/homunculus.d.ts +5 -2
  2. package/dist/abyss/homunculus.d.ts.map +1 -1
  3. package/dist/abyss/homunculus.js +6 -1
  4. package/dist/abyss/homunculus.js.map +1 -1
  5. package/dist/agent_manifest.d.ts +1 -1
  6. package/dist/agent_manifest.d.ts.map +1 -1
  7. package/dist/agent_manifest.js +13 -1
  8. package/dist/agent_manifest.js.map +1 -1
  9. package/dist/conduit/conduit.test.d.ts +2 -0
  10. package/dist/conduit/conduit.test.d.ts.map +1 -0
  11. package/dist/conduit/conduit.test.js +149 -0
  12. package/dist/conduit/conduit.test.js.map +1 -0
  13. package/dist/conduit/index.d.ts +20 -0
  14. package/dist/conduit/index.d.ts.map +1 -0
  15. package/dist/conduit/index.js +20 -0
  16. package/dist/conduit/index.js.map +1 -0
  17. package/dist/conduit/phantom_exec.d.ts +41 -0
  18. package/dist/conduit/phantom_exec.d.ts.map +1 -0
  19. package/dist/conduit/phantom_exec.js +52 -0
  20. package/dist/conduit/phantom_exec.js.map +1 -0
  21. package/dist/conduit/relay_prompt.d.ts +52 -0
  22. package/dist/conduit/relay_prompt.d.ts.map +1 -0
  23. package/dist/conduit/relay_prompt.js +127 -0
  24. package/dist/conduit/relay_prompt.js.map +1 -0
  25. package/dist/conduit/sync_status.d.ts +34 -0
  26. package/dist/conduit/sync_status.d.ts.map +1 -0
  27. package/dist/conduit/sync_status.js +63 -0
  28. package/dist/conduit/sync_status.js.map +1 -0
  29. package/dist/conduit/uninstall_directive.d.ts +40 -0
  30. package/dist/conduit/uninstall_directive.d.ts.map +1 -0
  31. package/dist/conduit/uninstall_directive.js +100 -0
  32. package/dist/conduit/uninstall_directive.js.map +1 -0
  33. package/dist/conduit/version_gate.d.ts +27 -0
  34. package/dist/conduit/version_gate.d.ts.map +1 -0
  35. package/dist/conduit/version_gate.js +59 -0
  36. package/dist/conduit/version_gate.js.map +1 -0
  37. package/dist/genesplice/genesplice.test.js +4 -3
  38. package/dist/genesplice/genesplice.test.js.map +1 -1
  39. package/dist/genesplice/soul_prompt.d.ts.map +1 -1
  40. package/dist/genesplice/soul_prompt.js +6 -0
  41. package/dist/genesplice/soul_prompt.js.map +1 -1
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +12 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/seamless/seamless.test.js +8 -2
  47. package/dist/seamless/seamless.test.js.map +1 -1
  48. package/dist/seamless/voice_directive.d.ts +5 -2
  49. package/dist/seamless/voice_directive.d.ts.map +1 -1
  50. package/dist/seamless/voice_directive.js +12 -5
  51. package/dist/seamless/voice_directive.js.map +1 -1
  52. package/dist/synapse/index.d.ts +17 -0
  53. package/dist/synapse/index.d.ts.map +1 -0
  54. package/dist/synapse/index.js +17 -0
  55. package/dist/synapse/index.js.map +1 -0
  56. package/dist/synapse/nexus_code.d.ts +48 -0
  57. package/dist/synapse/nexus_code.d.ts.map +1 -0
  58. package/dist/synapse/nexus_code.js +123 -0
  59. package/dist/synapse/nexus_code.js.map +1 -0
  60. package/dist/synapse/qr_anchor.d.ts +40 -0
  61. package/dist/synapse/qr_anchor.d.ts.map +1 -0
  62. package/dist/synapse/qr_anchor.js +91 -0
  63. package/dist/synapse/qr_anchor.js.map +1 -0
  64. package/dist/synapse/synapse.test.d.ts +2 -0
  65. package/dist/synapse/synapse.test.d.ts.map +1 -0
  66. package/dist/synapse/synapse.test.js +137 -0
  67. package/dist/synapse/synapse.test.js.map +1 -0
  68. package/dist/synapse/token_compression.d.ts +54 -0
  69. package/dist/synapse/token_compression.d.ts.map +1 -0
  70. package/dist/synapse/token_compression.js +90 -0
  71. package/dist/synapse/token_compression.js.map +1 -0
  72. package/dist/telepathy/heartbeat.d.ts.map +1 -1
  73. package/dist/telepathy/heartbeat.js +4 -1
  74. package/dist/telepathy/heartbeat.js.map +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: relay-prompt protocol.
3
+ *
4
+ * The bug user spotted: pasting a Mneme soul prompt into Gemini-web,
5
+ * then typing "upgrade mneme" -- Gemini-web has no Mneme + no MCP +
6
+ * no shell. It can't actually upgrade anything. But it tried to be
7
+ * helpful and freelanced a "Mneme Protocol v1.8 Master Collector
8
+ * Edition" creative response on top of the previous topic.
9
+ *
10
+ * Fix: every Mneme soul prompt now embeds a `## CONDUIT relay`
11
+ * section that teaches the receiving (paste-only) AI what to do
12
+ * when the user requests something only the source AI can execute:
13
+ *
14
+ * 1. Detect the request (upgrade / shell / install / disinfect / etc.).
15
+ * 2. DON'T fake-execute.
16
+ * 3. Emit a `# CONDUIT RETURN` block the user pastes BACK into
17
+ * their editor AI; that AI runs the real action.
18
+ *
19
+ * Architecture: web AI becomes a structured RELAY NODE, not a
20
+ * freelance pretender.
21
+ */
22
+ const RELAY_TRIGGERS = [
23
+ {
24
+ kind: "system.upgrade",
25
+ patterns: [
26
+ /\b(upgrade|update)\s+mneme\b/i,
27
+ /อัป(เดต|เกรด)\s*mneme/i,
28
+ /อัพ(เดต|เกรด)\s*mneme/i,
29
+ ],
30
+ intent: "upgrade the local Mneme installation",
31
+ },
32
+ {
33
+ kind: "system.uninstall",
34
+ patterns: [/\buninstall\s+mneme\b/i, /\bremove\s+mneme\b/i, /ถอน\s*mneme/i, /ลบ\s*mneme\s*ออก/i],
35
+ intent: "uninstall Mneme from the local machine",
36
+ },
37
+ {
38
+ kind: "shell.exec",
39
+ patterns: [/\b(npm|node|git|pnpm|yarn)\s+\w+/i, /run\s+(this )?command/i, /รัน\s*(คำสั่ง|command)/i],
40
+ intent: "execute a shell command",
41
+ },
42
+ {
43
+ kind: "filesystem.write",
44
+ patterns: [/\b(create|write|save|edit)\s+(file|the file)\b/i, /แก้ไข\s*ไฟล์/i],
45
+ intent: "write to the local filesystem",
46
+ },
47
+ {
48
+ kind: "mcp.call",
49
+ patterns: [/\bcall\s+mneme\.\w+/i, /\brun\s+mneme\.\w+/i, /\bใช้\s+mneme\.\w+/i],
50
+ intent: "call a specific Mneme MCP tool",
51
+ },
52
+ ];
53
+ /** Detect whether a user prompt requires action only the source AI can run. */
54
+ export function detectRelayAction(userPrompt) {
55
+ if (!userPrompt)
56
+ return { detected: false, kind: "unknown", intent: "" };
57
+ for (const entry of RELAY_TRIGGERS) {
58
+ for (const pat of entry.patterns) {
59
+ const m = userPrompt.match(pat);
60
+ if (m) {
61
+ return {
62
+ detected: true,
63
+ kind: entry.kind,
64
+ intent: entry.intent,
65
+ matchedPhrase: m[0],
66
+ };
67
+ }
68
+ }
69
+ }
70
+ return { detected: false, kind: "unknown", intent: "" };
71
+ }
72
+ /** Render the CONDUIT relay block embedded in every soul prompt.
73
+ * Tells the receiving (paste-only) AI exactly how to behave when
74
+ * the user asks for action it cannot execute. */
75
+ export function renderRelayBlock(opts = {}) {
76
+ const originator = opts.originatorVendor ?? "claude-opus-4-7";
77
+ const dest = opts.suggestedDestination ?? "the user's editor AI (Claude Code / Cursor / etc.)";
78
+ const lines = [];
79
+ lines.push(`## CONDUIT relay protocol (paste-only AIs read this carefully)`);
80
+ lines.push(``);
81
+ lines.push(`You received this soul prompt via paste. You do NOT have Mneme installed locally. You do NOT have shell access. You CANNOT actually run mneme.system.upgrade, edit files, or call MCP tools.`);
82
+ lines.push(``);
83
+ lines.push(`When the user asks for an action that requires real local execution (examples below), do NOT freelance a creative response. Instead, follow this protocol:`);
84
+ lines.push(``);
85
+ lines.push(`1. **Detect.** Recognize the request from this list:`);
86
+ for (const e of RELAY_TRIGGERS) {
87
+ lines.push(` - \`${e.kind}\` -- ${e.intent}`);
88
+ }
89
+ lines.push(``);
90
+ lines.push(`2. **Refuse to fake-execute.** Say honestly: *"I can't run that from here -- I'm a paste-only relay."*`);
91
+ lines.push(``);
92
+ lines.push(`3. **Emit a CONDUIT RETURN block** the user can paste back into ${dest}, which CAN execute it:`);
93
+ lines.push(``);
94
+ lines.push("```");
95
+ lines.push(`# CONDUIT RETURN`);
96
+ lines.push(`originator: ${originator}`);
97
+ lines.push(`returning_from: <your-model-id>`);
98
+ lines.push(`requested_action: <kind from the list above>`);
99
+ lines.push(`intent: <one-line plain English>`);
100
+ lines.push(`original_user_prompt: <verbatim>`);
101
+ lines.push("```");
102
+ lines.push(``);
103
+ lines.push(`4. **Tell the user:** *"Paste this back into ${dest} -- it will run the action and may send a new soul prompt back if needed."*`);
104
+ lines.push(``);
105
+ lines.push(`This is the loop closure for cross-vendor brain transfer. Honor it literally.`);
106
+ return lines.join("\n");
107
+ }
108
+ /** Parse a `# CONDUIT RETURN` block from pasted text. */
109
+ export function parseConduitReturn(text) {
110
+ if (!text.includes("CONDUIT RETURN"))
111
+ return null;
112
+ const get = (key) => {
113
+ const m = text.match(new RegExp(`^${key}:\\s*(.+)$`, "m"));
114
+ return m ? m[1].trim() : null;
115
+ };
116
+ const originator = get("originator");
117
+ const returningFrom = get("returning_from");
118
+ const requestedActionRaw = get("requested_action");
119
+ const intent = get("intent");
120
+ const originalUserPrompt = get("original_user_prompt");
121
+ if (!originator || !returningFrom || !requestedActionRaw || !intent || !originalUserPrompt)
122
+ return null;
123
+ const validKinds = ["system.upgrade", "system.uninstall", "shell.exec", "filesystem.read", "filesystem.write", "mcp.call", "unknown"];
124
+ const requestedAction = (validKinds.includes(requestedActionRaw) ? requestedActionRaw : "unknown");
125
+ return { originator, returningFrom, requestedAction, intent, originalUserPrompt };
126
+ }
127
+ //# sourceMappingURL=relay_prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay_prompt.js","sourceRoot":"","sources":["../../src/conduit/relay_prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: cross-vendor sync status.
3
+ *
4
+ * Single-source-of-truth report: given a soul prompt's embedded
5
+ * heartbeat (v1.75 TELEPATHY) and the local Mneme version, compute
6
+ * sync state across all AI clones.
7
+ *
8
+ * IN-SYNC -- soul.version == local.version
9
+ * SOURCE-NEWER -- source AI generated this soul on a NEWER Mneme
10
+ * than the local one (user may need to upgrade local)
11
+ * DESTINATION-NEWER -- local Mneme is newer than the soul's version
12
+ * (suggest user regenerate the soul prompt to
13
+ * pick up new features)
14
+ */
15
+ export type CrossVendorSync = "in-sync" | "source-newer" | "destination-newer" | "unknown";
16
+ export interface SyncStatusInput {
17
+ /** Version embedded in the pasted soul prompt's heartbeat block. */
18
+ soulVersion: string;
19
+ /** Local Mneme version (from package.json). */
20
+ localVersion: string;
21
+ /** Optional npm-latest from heartbeat. */
22
+ npmLatest?: string | null;
23
+ }
24
+ export interface SyncStatusReport {
25
+ status: CrossVendorSync;
26
+ soulVersion: string;
27
+ localVersion: string;
28
+ npmLatest: string | null;
29
+ recommendation: string;
30
+ /** Plain-English summary. */
31
+ summary: string;
32
+ }
33
+ export declare function computeSyncStatus(input: SyncStatusInput): SyncStatusReport;
34
+ //# sourceMappingURL=sync_status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync_status.d.ts","sourceRoot":"","sources":["../../src/conduit/sync_status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,cAAc,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAaD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAkC1E"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: cross-vendor sync status.
3
+ *
4
+ * Single-source-of-truth report: given a soul prompt's embedded
5
+ * heartbeat (v1.75 TELEPATHY) and the local Mneme version, compute
6
+ * sync state across all AI clones.
7
+ *
8
+ * IN-SYNC -- soul.version == local.version
9
+ * SOURCE-NEWER -- source AI generated this soul on a NEWER Mneme
10
+ * than the local one (user may need to upgrade local)
11
+ * DESTINATION-NEWER -- local Mneme is newer than the soul's version
12
+ * (suggest user regenerate the soul prompt to
13
+ * pick up new features)
14
+ */
15
+ function cmp(a, b) {
16
+ const ap = a.split(".").map((n) => parseInt(n, 10) || 0);
17
+ const bp = b.split(".").map((n) => parseInt(n, 10) || 0);
18
+ for (let i = 0; i < Math.max(ap.length, bp.length); i++) {
19
+ const ai = ap[i] ?? 0;
20
+ const bi = bp[i] ?? 0;
21
+ if (ai !== bi)
22
+ return ai < bi ? -1 : 1;
23
+ }
24
+ return 0;
25
+ }
26
+ export function computeSyncStatus(input) {
27
+ const { soulVersion, localVersion } = input;
28
+ const npmLatest = input.npmLatest ?? null;
29
+ if (!soulVersion || !localVersion) {
30
+ return {
31
+ status: "unknown",
32
+ soulVersion,
33
+ localVersion,
34
+ npmLatest,
35
+ recommendation: "version info missing -- proceed with caution",
36
+ summary: "sync status unknown",
37
+ };
38
+ }
39
+ const c = cmp(localVersion, soulVersion);
40
+ let status;
41
+ let recommendation;
42
+ if (c === 0) {
43
+ status = "in-sync";
44
+ recommendation = "no action needed";
45
+ }
46
+ else if (c < 0) {
47
+ status = "source-newer";
48
+ recommendation = `local Mneme is older than the soul (local v${localVersion}, soul v${soulVersion}). Run 'upgrade mneme' on this machine to catch up.`;
49
+ }
50
+ else {
51
+ status = "destination-newer";
52
+ recommendation = `local Mneme is NEWER than the soul (local v${localVersion}, soul v${soulVersion}). Regenerate the soul prompt to use new features.`;
53
+ }
54
+ return {
55
+ status,
56
+ soulVersion,
57
+ localVersion,
58
+ npmLatest,
59
+ recommendation,
60
+ summary: `cross-vendor sync: ${status}`,
61
+ };
62
+ }
63
+ //# sourceMappingURL=sync_status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync_status.js","sourceRoot":"","sources":["../../src/conduit/sync_status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAsB;IACtD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;IAC1C,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,WAAW;YACX,YAAY;YACZ,SAAS;YACT,cAAc,EAAE,8CAA8C;YAC9D,OAAO,EAAE,qBAAqB;SAC/B,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACzC,IAAI,MAAuB,CAAC;IAC5B,IAAI,cAAsB,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,MAAM,GAAG,SAAS,CAAC;QACnB,cAAc,GAAG,kBAAkB,CAAC;IACtC,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,cAAc,CAAC;QACxB,cAAc,GAAG,8CAA8C,YAAY,WAAW,WAAW,qDAAqD,CAAC;IACzJ,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,mBAAmB,CAAC;QAC7B,cAAc,GAAG,8CAA8C,YAAY,WAAW,WAAW,oDAAoD,CAAC;IACxJ,CAAC;IACD,OAAO;QACL,MAAM;QACN,WAAW;QACX,YAAY;QACZ,SAAS;QACT,cAAc;QACd,OAAO,EAAE,sBAAsB,MAAM,EAAE;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: per-vendor uninstall recipe.
3
+ *
4
+ * "How do I uninstall Mneme from <X>?" answered for every surface:
5
+ *
6
+ * editor AI (Cursor / Continue / Cline / Aider / Zed / Codex /
7
+ * Windsurf / Claude Code / JetBrains AI):
8
+ * -> `mneme uninstall` on local removes everything:
9
+ * - daemon + service
10
+ * - .mneme/ in repo (with --purge)
11
+ * - parasite-bridge blocks in CLAUDE.md / AGENTS.md / GEMINI.md
12
+ * / .cursor/rules / .windsurfrules / .cursorrules
13
+ * - global CLI binary
14
+ *
15
+ * web AI (chatgpt.com / gemini.google.com / claude.ai-web /
16
+ * copilot.microsoft.com / deepseek.com):
17
+ * -> Nothing to uninstall. Mneme was NEVER installed there.
18
+ * The soul prompt is just text. Close the chat tab; gone.
19
+ *
20
+ * browser userscript / bookmarklet:
21
+ * -> Open Tampermonkey -> disable / delete the script.
22
+ * -> Or just remove the bookmark from the bar.
23
+ */
24
+ export type UninstallSurface = "editor-ai" | "web-ai" | "browser-userscript" | "browser-bookmarklet" | "all";
25
+ export interface UninstallStep {
26
+ step: number;
27
+ what: string;
28
+ command?: string;
29
+ explanation: string;
30
+ }
31
+ export interface UninstallPlan {
32
+ surface: UninstallSurface;
33
+ steps: UninstallStep[];
34
+ estimateMinutes: number;
35
+ postCheck: string;
36
+ }
37
+ export declare function uninstallPlan(surface: UninstallSurface): UninstallPlan;
38
+ /** Render an uninstall plan as a plain-English markdown block. */
39
+ export declare function renderUninstallPlan(plan: UninstallPlan): string;
40
+ //# sourceMappingURL=uninstall_directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall_directive.d.ts","sourceRoot":"","sources":["../../src/conduit/uninstall_directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,QAAQ,GACR,oBAAoB,GACpB,qBAAqB,GACrB,KAAK,CAAC;AAEV,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,aAAa,CAyDtE;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAe/D"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: per-vendor uninstall recipe.
3
+ *
4
+ * "How do I uninstall Mneme from <X>?" answered for every surface:
5
+ *
6
+ * editor AI (Cursor / Continue / Cline / Aider / Zed / Codex /
7
+ * Windsurf / Claude Code / JetBrains AI):
8
+ * -> `mneme uninstall` on local removes everything:
9
+ * - daemon + service
10
+ * - .mneme/ in repo (with --purge)
11
+ * - parasite-bridge blocks in CLAUDE.md / AGENTS.md / GEMINI.md
12
+ * / .cursor/rules / .windsurfrules / .cursorrules
13
+ * - global CLI binary
14
+ *
15
+ * web AI (chatgpt.com / gemini.google.com / claude.ai-web /
16
+ * copilot.microsoft.com / deepseek.com):
17
+ * -> Nothing to uninstall. Mneme was NEVER installed there.
18
+ * The soul prompt is just text. Close the chat tab; gone.
19
+ *
20
+ * browser userscript / bookmarklet:
21
+ * -> Open Tampermonkey -> disable / delete the script.
22
+ * -> Or just remove the bookmark from the bar.
23
+ */
24
+ export function uninstallPlan(surface) {
25
+ switch (surface) {
26
+ case "editor-ai":
27
+ return {
28
+ surface,
29
+ steps: [
30
+ { step: 1, what: "Run uninstall on the local machine", command: "mneme uninstall --purge", explanation: "Removes daemon, OS service, .mneme/ dir, npm binary, parasite-bridge blocks from CLAUDE.md / AGENTS.md / GEMINI.md / .cursor / .windsurfrules / .cursorrules." },
31
+ { step: 2, what: "Restart your editor", explanation: "MCP server connections refresh; Mneme tools disappear from the tool list." },
32
+ { step: 3, what: "Verify", command: "which mneme", explanation: "Should return nothing. If still present, run npm uninstall -g mneme-ai." },
33
+ ],
34
+ estimateMinutes: 2,
35
+ postCheck: "`which mneme` empty + no `.mneme/` directory in your repo + no sentinel blocks in agent files.",
36
+ };
37
+ case "web-ai":
38
+ return {
39
+ surface,
40
+ steps: [
41
+ { step: 1, what: "Close the chat tab", explanation: "Web AIs never had Mneme installed; the soul prompt was just pasted text. Closing the tab clears the context." },
42
+ { step: 2, what: "Stop pasting new soul prompts", explanation: "No persistent state on the web AI side -- once you stop pasting, no further Mneme context reaches it." },
43
+ ],
44
+ estimateMinutes: 0,
45
+ postCheck: "Open a fresh chat tab; nothing Mneme-related survives.",
46
+ };
47
+ case "browser-userscript":
48
+ return {
49
+ surface,
50
+ steps: [
51
+ { step: 1, what: "Open your userscript manager", explanation: "Tampermonkey / Greasemonkey / Violentmonkey extension icon in the browser toolbar." },
52
+ { step: 2, what: "Find the Mneme Soul Injector entry", explanation: "Usually named `mneme-soul-injector.user.js`." },
53
+ { step: 3, what: "Click Delete (or toggle Disabled)", explanation: "Removes the 💉 button from chat pages on next reload." },
54
+ ],
55
+ estimateMinutes: 1,
56
+ postCheck: "Reload chatgpt.com (or any chat surface) -- the 💉 button is gone.",
57
+ };
58
+ case "browser-bookmarklet":
59
+ return {
60
+ surface,
61
+ steps: [
62
+ { step: 1, what: "Open browser bookmarks", explanation: "Bookmark bar or bookmark manager." },
63
+ { step: 2, what: "Right-click the 💉 Mneme Soul bookmark", explanation: "Delete it." },
64
+ ],
65
+ estimateMinutes: 1,
66
+ postCheck: "Bookmark gone from the bar; no `javascript:` URI remains.",
67
+ };
68
+ case "all":
69
+ return {
70
+ surface: "all",
71
+ steps: [
72
+ { step: 1, what: "Editor: run `mneme uninstall --purge`", command: "mneme uninstall --purge", explanation: "Covers all editor AIs in one shot via parasite disinfect." },
73
+ { step: 2, what: "Web AIs: close chat tabs", explanation: "Nothing persistent; clean." },
74
+ { step: 3, what: "Browser: disable userscript / remove bookmarklet", explanation: "Surface-specific UI; takes ~1 minute each." },
75
+ { step: 4, what: "Optional: clear archived souls", command: "rm -rf .mneme/abyss/souls", explanation: "If you want to wipe the REVENANT archive too." },
76
+ ],
77
+ estimateMinutes: 4,
78
+ postCheck: "No `mneme` binary, no `.mneme/` dir, no sentinel blocks, no userscripts, no bookmarklets.",
79
+ };
80
+ }
81
+ }
82
+ /** Render an uninstall plan as a plain-English markdown block. */
83
+ export function renderUninstallPlan(plan) {
84
+ const lines = [];
85
+ lines.push(`## Uninstall Mneme from \`${plan.surface}\``);
86
+ lines.push(``);
87
+ lines.push(`Estimated time: **${plan.estimateMinutes} minute(s)**.`);
88
+ lines.push(``);
89
+ for (const s of plan.steps) {
90
+ lines.push(`${s.step}. **${s.what}**`);
91
+ if (s.command)
92
+ lines.push(` - Command: \`${s.command}\``);
93
+ lines.push(` - Why: ${s.explanation}`);
94
+ }
95
+ lines.push(``);
96
+ lines.push(`### Post-check`);
97
+ lines.push(plan.postCheck);
98
+ return lines.join("\n");
99
+ }
100
+ //# sourceMappingURL=uninstall_directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall_directive.js","sourceRoot":"","sources":["../../src/conduit/uninstall_directive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: version gate (DEAD MAN'S HANDSHAKE).
3
+ *
4
+ * Every soul prompt has a `createdAt` timestamp. Web AIs reading the
5
+ * paste should know if the prompt is STALE -- meaning the source
6
+ * Mneme has likely shipped newer features since this snapshot.
7
+ *
8
+ * Rules:
9
+ * FRESH -- <24h old -- act normally
10
+ * AGING -- 24h..7d old -- mention age in reply opener
11
+ * STALE -- >7d old -- suggest user re-paste a new soul
12
+ * ABANDONED -- >30d old -- refuse to act on stale soul;
13
+ * require fresh handover
14
+ */
15
+ export type Freshness = "fresh" | "aging" | "stale" | "abandoned";
16
+ export interface FreshnessReport {
17
+ freshness: Freshness;
18
+ ageHours: number;
19
+ /** Action the AI should take. */
20
+ action: "act-normally" | "mention-age" | "suggest-refresh" | "refuse-stale";
21
+ /** One-line summary the AI can include in its reply. */
22
+ hint: string;
23
+ }
24
+ export declare function checkFreshness(createdAtIso: string, now?: Date): FreshnessReport;
25
+ /** Render a gate directive to embed in soul prompts. */
26
+ export declare function renderVersionGate(createdAtIso: string): string;
27
+ //# sourceMappingURL=version_gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version_gate.d.ts","sourceRoot":"","sources":["../../src/conduit/version_gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,cAAc,GAAG,aAAa,GAAG,iBAAiB,GAAG,cAAc,CAAC;IAC5E,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,eAAe,CA8B5F;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAU9D"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * v1.80.0 -- CONDUIT: version gate (DEAD MAN'S HANDSHAKE).
3
+ *
4
+ * Every soul prompt has a `createdAt` timestamp. Web AIs reading the
5
+ * paste should know if the prompt is STALE -- meaning the source
6
+ * Mneme has likely shipped newer features since this snapshot.
7
+ *
8
+ * Rules:
9
+ * FRESH -- <24h old -- act normally
10
+ * AGING -- 24h..7d old -- mention age in reply opener
11
+ * STALE -- >7d old -- suggest user re-paste a new soul
12
+ * ABANDONED -- >30d old -- refuse to act on stale soul;
13
+ * require fresh handover
14
+ */
15
+ const HOUR_MS = 60 * 60 * 1000;
16
+ const DAY_MS = 24 * HOUR_MS;
17
+ export function checkFreshness(createdAtIso, now = new Date()) {
18
+ const createdAt = new Date(createdAtIso);
19
+ const ageMs = now.getTime() - createdAt.getTime();
20
+ const ageHours = Math.max(0, Math.round(ageMs / HOUR_MS));
21
+ if (ageMs < DAY_MS) {
22
+ return { freshness: "fresh", ageHours, action: "act-normally", hint: "" };
23
+ }
24
+ if (ageMs < 7 * DAY_MS) {
25
+ return {
26
+ freshness: "aging",
27
+ ageHours,
28
+ action: "mention-age",
29
+ hint: `soul prompt is ${Math.round(ageHours / 24)} day(s) old; minor drift possible`,
30
+ };
31
+ }
32
+ if (ageMs < 30 * DAY_MS) {
33
+ return {
34
+ freshness: "stale",
35
+ ageHours,
36
+ action: "suggest-refresh",
37
+ hint: `soul prompt is ${Math.round(ageHours / 24)} day(s) old -- ask source AI for a fresh handover`,
38
+ };
39
+ }
40
+ return {
41
+ freshness: "abandoned",
42
+ ageHours,
43
+ action: "refuse-stale",
44
+ hint: `soul prompt is ${Math.round(ageHours / 24)} day(s) old (>30) -- refuse stale context; require fresh handover`,
45
+ };
46
+ }
47
+ /** Render a gate directive to embed in soul prompts. */
48
+ export function renderVersionGate(createdAtIso) {
49
+ const lines = [];
50
+ lines.push(`## Version gate (DEAD MAN'S HANDSHAKE)`);
51
+ lines.push(``);
52
+ lines.push(`This soul prompt was created at \`${createdAtIso}\`. Compute age = now - createdAt and act:`);
53
+ lines.push(`- **<24h**: fresh -- act normally.`);
54
+ lines.push(`- **24h..7d**: aging -- mention age once in your reply opener.`);
55
+ lines.push(`- **7d..30d**: stale -- tell the user *"this brain is N days old; ask your editor AI for a fresh handover"*.`);
56
+ lines.push(`- **>30d**: abandoned -- refuse to act on this context; require a fresh handover.`);
57
+ return lines.join("\n");
58
+ }
59
+ //# sourceMappingURL=version_gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version_gate.js","sourceRoot":"","sources":["../../src/conduit/version_gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/B,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC;AAE5B,MAAM,UAAU,cAAc,CAAC,YAAoB,EAAE,MAAY,IAAI,IAAI,EAAE;IACzE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IAE1D,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,QAAQ;YACR,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,mCAAmC;SACrF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACxB,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,QAAQ;YACR,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,mDAAmD;SACrG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,SAAS,EAAE,WAAW;QACtB,QAAQ;QACR,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,mEAAmE;KACrH,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qCAAqC,YAAY,4CAA4C,CAAC,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAC;IAC3H,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IAChG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -35,8 +35,8 @@ describe("v1.73 GeneSplice G1 · Soul Prompt", () => {
35
35
  it("compresses to a bounded token budget (incl. v1.77 voice directive + v1.78 dictionary)", () => {
36
36
  const cap = sampleCapsule("claude");
37
37
  const soul = compressToSoulPrompt({ capsule: cap });
38
- // 500 token base body + ~80 voice directive + ~210 dictionary = ~790 max
39
- expect(soul.estTokens).toBeLessThanOrEqual(900);
38
+ // 500 base + ~80 voice + ~210 dictionary + ~120 conduit relay + ~30 version gate ≈ 1200 max
39
+ expect(soul.estTokens).toBeLessThanOrEqual(1400);
40
40
  expect(soul.text).toContain("MNEME SOUL PROMPT");
41
41
  expect(soul.text).toContain("claude");
42
42
  expect(soul.text).toContain("bcrypt");
@@ -190,7 +190,8 @@ describe("v1.73 GeneSplice · END-TO-END brain transfer (no install)", () => {
190
190
  });
191
191
  // Step 2: Compress to soul prompt
192
192
  const soul = compressToSoulPrompt({ capsule: cap, secret: "test-cluster-secret" });
193
- expect(soul.estTokens).toBeLessThan(800);
193
+ // v1.80 conduit blocks raise the budget; ~1200 max with relay + gate.
194
+ expect(soul.estTokens).toBeLessThan(1400);
194
195
  // Step 3: Express for Gemini
195
196
  const geminiSoul = expressSoulForVendor(soul.text, "gemini-pro", "claude-opus-4-7");
196
197
  expect(geminiSoul).toContain("Resumed from claude-opus-4-7");
@@ -1 +1 @@
1
- {"version":3,"file":"genesplice.test.js","sourceRoot":"","sources":["../../src/genesplice/genesplice.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genesplice.test.js","sourceRoot":"","sources":["../../src/genesplice/genesplice.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"soul_prompt.d.ts","sourceRoot":"","sources":["../../src/genesplice/soul_prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAIpF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB;uEACmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;2CAGuC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAcD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CA2DvE;AAED,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gCAAgC;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;CAC9D;AAED;;0CAE0C;AAC1C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAsDrF"}
1
+ {"version":3,"file":"soul_prompt.d.ts","sourceRoot":"","sources":["../../src/genesplice/soul_prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAMpF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB;uEACmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;2CAGuC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAcD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CA+DvE;AAED,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gCAAgC;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;CAC9D;AAED;;0CAE0C;AAC1C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAsDrF"}
@@ -44,6 +44,8 @@ import { createHash, createHmac } from "node:crypto";
44
44
  import { renderHeartbeatMarkdown } from "../telepathy/heartbeat.js";
45
45
  import { renderVoiceDirective } from "../seamless/voice_directive.js";
46
46
  import { renderDictionary } from "../lattice/dictionary.js";
47
+ import { renderRelayBlock } from "../conduit/relay_prompt.js";
48
+ import { renderVersionGate } from "../conduit/version_gate.js";
47
49
  const TOK_PER_WORD = 1.3;
48
50
  function estTokens(s) {
49
51
  return Math.round(s.split(/\s+/).filter(Boolean).length * TOK_PER_WORD);
@@ -82,6 +84,10 @@ export function compressToSoulPrompt(input) {
82
84
  "",
83
85
  renderDictionary(),
84
86
  "",
87
+ renderRelayBlock({ originatorVendor: capsule.originVendor }),
88
+ "",
89
+ renderVersionGate(capsule.createdAt),
90
+ "",
85
91
  `## Origin`,
86
92
  `vendor=${capsule.originVendor} capsule=${capsule.id} fingerprint=${capsule.repoFingerprint} createdAt=${capsule.createdAt}`,
87
93
  "",