@mneme-ai/core 2.9.2 → 2.9.4

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.
@@ -0,0 +1,15 @@
1
+ /**
2
+ * v2.9.4 -- BEACON page template (extracted so the renderer file stays
3
+ * readable). Bilingual TH/EN with toggle, centered layout, prominent
4
+ * manual fallback, bilingual error messages on button failure.
5
+ *
6
+ * The HTML embeds a small i18n table so the JS toggle works WITHOUT any
7
+ * network or framework — works on every browser including iOS Safari,
8
+ * Android Chrome, Samsung Internet, Firefox, etc.
9
+ */
10
+ export interface PageVendor {
11
+ name: string;
12
+ url: string;
13
+ }
14
+ export declare function renderBeaconHtmlPage(payload: string, vendor: PageVendor, label: string): string;
15
+ //# sourceMappingURL=_page_template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page_template.d.ts","sourceRoot":"","sources":["../../src/beacon/_page_template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAqL/F"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * v2.9.4 -- BEACON page template (extracted so the renderer file stays
3
+ * readable). Bilingual TH/EN with toggle, centered layout, prominent
4
+ * manual fallback, bilingual error messages on button failure.
5
+ *
6
+ * The HTML embeds a small i18n table so the JS toggle works WITHOUT any
7
+ * network or framework — works on every browser including iOS Safari,
8
+ * Android Chrome, Samsung Internet, Firefox, etc.
9
+ */
10
+ function escapeHtml(s) {
11
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
12
+ }
13
+ export function renderBeaconHtmlPage(payload, vendor, label) {
14
+ const safePayload = escapeHtml(payload);
15
+ const vName = escapeHtml(vendor.name);
16
+ const vUrl = escapeHtml(vendor.url);
17
+ const vNameJs = vendor.name.replace(/[\\']/g, "\\$&");
18
+ return [
19
+ "<!doctype html>",
20
+ "<html lang=\"th\"><head>",
21
+ "<meta charset=\"utf-8\">",
22
+ "<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,maximum-scale=5\">",
23
+ `<title>${escapeHtml(label)}</title>`,
24
+ "<style>",
25
+ "*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}",
26
+ "html,body{margin:0;padding:0;background:#f5f7fa}",
27
+ "body{font-family:-apple-system,BlinkMacSystemFont,system-ui,\"Segoe UI\",Roboto,\"Sukhumvit Set\",\"Noto Sans Thai\",sans-serif;line-height:1.55;color:#1f2328}",
28
+ ".wrap{max-width:560px;margin:0 auto;padding:18px 16px 36px;text-align:center}",
29
+ ".topbar{display:flex;justify-content:flex-end;gap:6px;margin-bottom:8px}",
30
+ ".lang-btn{font-size:.88em;padding:6px 12px;border:1px solid #d0d7de;background:#fff;border-radius:999px;cursor:pointer;color:#57606a;font-weight:600}",
31
+ ".lang-btn.active{background:#1a73e8;color:#fff;border-color:#1a73e8}",
32
+ "h1{font-size:1.35em;margin:.4em 0 .2em;color:#0d1117;font-weight:700}",
33
+ ".lead{color:#57606a;margin:0 auto 18px;max-width:460px;font-size:.95em}",
34
+ ".step{margin:22px 0 8px;font-size:1.02em;font-weight:700;color:#1f2328;text-align:left}",
35
+ ".btn{display:block;width:100%;font-size:1.05em;padding:16px 18px;border:0;border-radius:12px;color:#fff;cursor:pointer;font-weight:700;text-align:center;text-decoration:none;margin:8px 0;box-shadow:0 1px 3px rgba(0,0,0,.08)}",
36
+ ".btn-primary{background:#1a73e8}",
37
+ ".btn-primary:active{background:#0d47a1;transform:translateY(1px)}",
38
+ ".btn-vendor{background:#137333}",
39
+ ".btn-vendor:active{background:#0b5a25;transform:translateY(1px)}",
40
+ ".btn-secondary{background:#57606a;font-size:.95em;padding:12px 16px}",
41
+ ".btn-secondary:active{background:#3d4148}",
42
+ ".status{margin:10px auto;padding:10px 14px;border-radius:8px;font-weight:600;display:none;text-align:left}",
43
+ ".status.show{display:block}",
44
+ ".status.ok{background:#dafbe1;color:#116329;border:1px solid #2da44e}",
45
+ ".status.err{background:#ffebe9;color:#82071e;border:1px solid #d1242f}",
46
+ ".toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#24292f;color:#fff;padding:10px 18px;border-radius:999px;font-size:.95em;opacity:0;transition:opacity .25s;pointer-events:none;z-index:9}",
47
+ ".toast.show{opacity:.95}",
48
+ ".manual-box{background:#fff;border:1px solid #d0d7de;border-radius:10px;padding:14px;margin:14px 0;text-align:left}",
49
+ ".manual-box h3{margin:0 0 8px;font-size:1em;color:#1f2328}",
50
+ "pre{white-space:pre-wrap;word-break:break-word;background:#f6f8fa;border:1px solid #d0d7de;padding:10px;border-radius:6px;font-size:.78em;max-height:32vh;overflow:auto;text-align:left;-webkit-user-select:all;user-select:all}",
51
+ ".footer{margin-top:30px;padding-top:14px;border-top:1px solid #e1e4e8;color:#8b949e;font-size:.82em}",
52
+ ".hint{font-size:.88em;color:#57606a;margin:6px auto 0;text-align:left}",
53
+ "[data-lang]{display:none}",
54
+ ".block[data-lang]{display:none}",
55
+ ".block[data-lang].on{display:block}",
56
+ "span[data-lang].on{display:inline}",
57
+ "</style></head><body>",
58
+ "<div class=\"wrap\">",
59
+ " <div class=\"topbar\">",
60
+ " <button id=\"lang-th\" class=\"lang-btn active\" onclick=\"setLang('th')\">TH</button>",
61
+ " <button id=\"lang-en\" class=\"lang-btn\" onclick=\"setLang('en')\">EN</button>",
62
+ " </div>",
63
+ ` <h1>${escapeHtml(label)}</h1>`,
64
+ ` <p class="lead block on" data-lang="th">การส่งสมอง Mneme ข้ามอุปกรณ์ ไม่ต้องติดตั้งอะไรในเครื่องนี้ แค่กดปุ่มตามลำดับ → ส่งต่อให้ ${vName} ได้เลย</p>`,
65
+ ` <p class="lead block" data-lang="en">Mneme cross-device brain transfer. No app install needed on this device. Tap the buttons below in order to hand off to ${vName}.</p>`,
66
+ " <div class=\"step\">",
67
+ " <span class=\"block on\" data-lang=\"th\">ขั้นที่ 1 — กดเพื่อคัดลอก</span>",
68
+ " <span class=\"block\" data-lang=\"en\">Step 1 — Copy the soul prompt</span>",
69
+ " </div>",
70
+ " <button id=\"cp\" class=\"btn btn-primary\" onclick=\"copyAndStatus()\">",
71
+ " <span data-lang=\"th\" class=\"on\">📋 คัดลอก Soul Prompt</span>",
72
+ " <span data-lang=\"en\">📋 Copy soul prompt</span>",
73
+ " </button>",
74
+ " <div class=\"status\" id=\"s\"></div>",
75
+ " <div class=\"step\">",
76
+ ` <span class="block on" data-lang="th">ขั้นที่ 2 — เปิด ${vName} แล้ว paste</span>`,
77
+ ` <span class="block" data-lang="en">Step 2 — Open ${vName} and paste</span>`,
78
+ " </div>",
79
+ ` <a href="${vUrl}" target="_blank" rel="noopener" class="btn btn-vendor" id="open-vendor" onclick="markOpened()">`,
80
+ ` <span data-lang="th" class="on">🚀 เปิด ${vName}</span>`,
81
+ ` <span data-lang="en">🚀 Open ${vName}</span>`,
82
+ " </a>",
83
+ ` <p class="hint block on" data-lang="th">เมื่อ ${vName} เปิดแล้ว → กดค้างที่ช่องพิมพ์ → Paste → ส่ง. AI จะอ่าน LIVE STATE block ที่ด้านบนของ prompt และคุยต่อจากที่ค้างไว้</p>`,
84
+ ` <p class="hint block" data-lang="en">After ${vName} opens, long-press the chat box → Paste → Send. The receiving AI reads the LIVE STATE block at the top and continues your conversation.</p>`,
85
+ " <div class=\"manual-box\">",
86
+ " <h3>",
87
+ " <span class=\"block on\" data-lang=\"th\">📜 Soul Prompt (สำหรับคัดลอกแบบ manual)</span>",
88
+ " <span class=\"block\" data-lang=\"en\">📜 Soul prompt (manual copy fallback)</span>",
89
+ " </h3>",
90
+ " <p class=\"hint block on\" data-lang=\"th\">ถ้าปุ่มด้านบนใช้ไม่ได้ในเบราว์เซอร์ของคุณ — กดปุ่มสีเทาด้านล่าง หรือกดค้างที่ข้อความใน pre block → Copy</p>",
91
+ " <p class=\"hint block\" data-lang=\"en\">If the buttons above don't work in your browser, use the grey button below — or long-press the text in the pre block → Copy.</p>",
92
+ " <button class=\"btn btn-secondary\" onclick=\"copyManual()\">",
93
+ " <span data-lang=\"th\" class=\"on\">📋 คัดลอกจากกล่องนี้</span>",
94
+ " <span data-lang=\"en\">📋 Copy from this box</span>",
95
+ " </button>",
96
+ ` <pre id="p">${safePayload}</pre>`,
97
+ " </div>",
98
+ " <div class=\"footer\">",
99
+ " <span class=\"block on\" data-lang=\"th\">เสิร์ฟโดย Mneme BEACON · เซิร์ฟเวอร์ชั่วคราว · ปิดอัตโนมัติหลังไม่มีคนเข้าใน 10 นาที · <span id=\"ts\"></span></span>",
100
+ " <span class=\"block\" data-lang=\"en\">Served by Mneme BEACON · ephemeral local server · auto-stops after 10 min idle · <span id=\"ts2\"></span></span>",
101
+ " </div>",
102
+ "</div>",
103
+ "<div class=\"toast\" id=\"toast\"></div>",
104
+ "<script>",
105
+ "var i18n = {",
106
+ " th: {",
107
+ ` copied: '✓ คัดลอกแล้ว! แตะ \"เปิด ${vNameJs}\" ด้านบน แล้ว paste ในช่องแชท',`,
108
+ " copyFail: '⚠ คัดลอกอัตโนมัติไม่ได้ในเบราว์เซอร์นี้ — เลื่อนลงไปที่กล่อง \"Soul Prompt\" ด้านล่าง → กดปุ่มสีเทา หรือกดค้างที่ข้อความ → Copy',",
109
+ " noClipboard: '⚠ เบราว์เซอร์นี้ไม่รองรับ auto-copy — เลื่อนลงไปที่กล่อง \"Soul Prompt\" ด้านล่าง → กดปุ่มสีเทา หรือกดค้างที่ข้อความ → Copy',",
110
+ ` manualOk: '✓ คัดลอกจากกล่อง manual แล้ว — เปิด ${vNameJs} แล้ว paste',`,
111
+ " manualFail: '⚠ คัดลอกไม่ได้ — เลือกข้อความใน pre block ด้านล่าง → กดค้าง → Copy ในเมนู',",
112
+ " toastCopied: 'คัดลอกแล้ว ✓'",
113
+ " },",
114
+ " en: {",
115
+ ` copied: '✓ Copied! Tap \"Open ${vNameJs}\" above, then paste in the chat box.',`,
116
+ " copyFail: '⚠ Auto-copy not allowed in this browser — scroll down to the \"Soul Prompt\" box → tap the grey button, or long-press the text → Copy.',",
117
+ " noClipboard: '⚠ This browser does not support auto-copy — scroll down to the \"Soul Prompt\" box → tap the grey button, or long-press the text → Copy.',",
118
+ ` manualOk: '✓ Copied from manual box — open ${vNameJs} and paste.',`,
119
+ " manualFail: '⚠ Copy failed — select the text in the pre block below → long-press → choose Copy from the menu.',",
120
+ " toastCopied: 'Copied ✓'",
121
+ " }",
122
+ "};",
123
+ "var curLang = 'th';",
124
+ "function setLang(l){",
125
+ " curLang = l;",
126
+ " document.documentElement.lang = l;",
127
+ " var els = document.querySelectorAll('[data-lang]');",
128
+ " for (var i=0;i<els.length;i++){ if (els[i].dataset.lang === l) els[i].classList.add('on'); else els[i].classList.remove('on'); }",
129
+ " document.getElementById('lang-th').classList.toggle('active', l === 'th');",
130
+ " document.getElementById('lang-en').classList.toggle('active', l === 'en');",
131
+ " var sEl = document.getElementById('s');",
132
+ " var kind = sEl.dataset.kind;",
133
+ " if (kind && i18n[l][kind]) sEl.textContent = i18n[l][kind];",
134
+ "}",
135
+ "function setStatus(kind, klass){",
136
+ " var s = document.getElementById('s');",
137
+ " s.dataset.kind = kind;",
138
+ " s.textContent = i18n[curLang][kind];",
139
+ " s.className = 'status show ' + klass;",
140
+ "}",
141
+ "function showToast(text){",
142
+ " var t = document.getElementById('toast');",
143
+ " t.textContent = text;",
144
+ " t.classList.add('show');",
145
+ " setTimeout(function(){ t.classList.remove('show'); }, 2000);",
146
+ "}",
147
+ "function copyText(text){",
148
+ " if (navigator.clipboard && navigator.clipboard.writeText) {",
149
+ " return navigator.clipboard.writeText(text);",
150
+ " }",
151
+ " // Legacy fallback for browsers without async clipboard API",
152
+ " return new Promise(function(resolve, reject){",
153
+ " try {",
154
+ " var ta = document.createElement('textarea');",
155
+ " ta.value = text;",
156
+ " ta.style.position = 'fixed';",
157
+ " ta.style.opacity = '0';",
158
+ " document.body.appendChild(ta);",
159
+ " ta.select();",
160
+ " var ok = document.execCommand('copy');",
161
+ " document.body.removeChild(ta);",
162
+ " ok ? resolve() : reject(new Error('execCommand failed'));",
163
+ " } catch (e) { reject(e); }",
164
+ " });",
165
+ "}",
166
+ "function copyAndStatus(){",
167
+ " var el = document.getElementById('p');",
168
+ " copyText(el.textContent).then(function(){",
169
+ " setStatus('copied', 'ok');",
170
+ " showToast(i18n[curLang].toastCopied);",
171
+ " }).catch(function(){ setStatus('copyFail', 'err'); });",
172
+ "}",
173
+ "function copyManual(){",
174
+ " var el = document.getElementById('p');",
175
+ " copyText(el.textContent).then(function(){",
176
+ " setStatus('manualOk', 'ok');",
177
+ " showToast(i18n[curLang].toastCopied);",
178
+ " }).catch(function(){",
179
+ " var range = document.createRange();",
180
+ " range.selectNodeContents(el);",
181
+ " var sel = window.getSelection();",
182
+ " sel.removeAllRanges();",
183
+ " sel.addRange(range);",
184
+ " setStatus('manualFail', 'err');",
185
+ " });",
186
+ "}",
187
+ "function markOpened(){ /* hook for future telemetry */ }",
188
+ "var ts = new Date().toLocaleString();",
189
+ "document.getElementById('ts').textContent = ts;",
190
+ "document.getElementById('ts2').textContent = ts;",
191
+ "</script>",
192
+ "</body></html>",
193
+ ].join("\n");
194
+ }
195
+ //# sourceMappingURL=_page_template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page_template.js","sourceRoot":"","sources":["../../src/beacon/_page_template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtG,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAAkB,EAAE,KAAa;IACrF,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO;QACL,iBAAiB;QACjB,0BAA0B;QAC1B,0BAA0B;QAC1B,yFAAyF;QACzF,UAAU,UAAU,CAAC,KAAK,CAAC,UAAU;QACrC,SAAS;QACT,kEAAkE;QAClE,kDAAkD;QAClD,iKAAiK;QACjK,+EAA+E;QAC/E,0EAA0E;QAC1E,uJAAuJ;QACvJ,sEAAsE;QACtE,uEAAuE;QACvE,yEAAyE;QACzE,yFAAyF;QACzF,kOAAkO;QAClO,kCAAkC;QAClC,mEAAmE;QACnE,iCAAiC;QACjC,kEAAkE;QAClE,sEAAsE;QACtE,2CAA2C;QAC3C,4GAA4G;QAC5G,6BAA6B;QAC7B,uEAAuE;QACvE,wEAAwE;QACxE,4NAA4N;QAC5N,0BAA0B;QAC1B,qHAAqH;QACrH,4DAA4D;QAC5D,kOAAkO;QAClO,sGAAsG;QACtG,wEAAwE;QACxE,2BAA2B;QAC3B,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,uBAAuB;QACvB,sBAAsB;QACtB,0BAA0B;QAC1B,4FAA4F;QAC5F,qFAAqF;QACrF,UAAU;QACV,SAAS,UAAU,CAAC,KAAK,CAAC,OAAO;QACjC,uIAAuI,KAAK,aAAa;QACzJ,iKAAiK,KAAK,OAAO;QAC7K,wBAAwB;QACxB,gFAAgF;QAChF,iFAAiF;QACjF,UAAU;QACV,4EAA4E;QAC5E,sEAAsE;QACtE,uDAAuD;QACvD,aAAa;QACb,yCAAyC;QACzC,wBAAwB;QACxB,8DAA8D,KAAK,oBAAoB;QACvF,wDAAwD,KAAK,mBAAmB;QAChF,UAAU;QACV,cAAc,IAAI,kGAAkG;QACpH,+CAA+C,KAAK,SAAS;QAC7D,oCAAoC,KAAK,SAAS;QAClD,QAAQ;QACR,mDAAmD,KAAK,yHAAyH;QACjL,gDAAgD,KAAK,6IAA6I;QAClM,8BAA8B;QAC9B,UAAU;QACV,gGAAgG;QAChG,2FAA2F;QAC3F,WAAW;QACX,6JAA6J;QAC7J,+KAA+K;QAC/K,mEAAmE;QACnE,uEAAuE;QACvE,2DAA2D;QAC3D,eAAe;QACf,mBAAmB,WAAW,QAAQ;QACtC,UAAU;QACV,0BAA0B;QAC1B,qKAAqK;QACrK,6JAA6J;QAC7J,UAAU;QACV,QAAQ;QACR,0CAA0C;QAC1C,UAAU;QACV,cAAc;QACd,SAAS;QACT,yCAAyC,OAAO,kCAAkC;QAClF,kJAAkJ;QAClJ,iJAAiJ;QACjJ,sDAAsD,OAAO,eAAe;QAC5E,8FAA8F;QAC9F,iCAAiC;QACjC,MAAM;QACN,SAAS;QACT,qCAAqC,OAAO,yCAAyC;QACrF,yJAAyJ;QACzJ,8JAA8J;QAC9J,kDAAkD,OAAO,eAAe;QACxE,qHAAqH;QACrH,6BAA6B;QAC7B,KAAK;QACL,IAAI;QACJ,qBAAqB;QACrB,sBAAsB;QACtB,gBAAgB;QAChB,sCAAsC;QACtC,uDAAuD;QACvD,oIAAoI;QACpI,8EAA8E;QAC9E,8EAA8E;QAC9E,2CAA2C;QAC3C,gCAAgC;QAChC,+DAA+D;QAC/D,GAAG;QACH,kCAAkC;QAClC,yCAAyC;QACzC,0BAA0B;QAC1B,wCAAwC;QACxC,yCAAyC;QACzC,GAAG;QACH,2BAA2B;QAC3B,6CAA6C;QAC7C,yBAAyB;QACzB,4BAA4B;QAC5B,gEAAgE;QAChE,GAAG;QACH,0BAA0B;QAC1B,+DAA+D;QAC/D,iDAAiD;QACjD,KAAK;QACL,+DAA+D;QAC/D,iDAAiD;QACjD,WAAW;QACX,oDAAoD;QACpD,wBAAwB;QACxB,oCAAoC;QACpC,+BAA+B;QAC/B,sCAAsC;QACtC,oBAAoB;QACpB,8CAA8C;QAC9C,sCAAsC;QACtC,iEAAiE;QACjE,gCAAgC;QAChC,OAAO;QACP,GAAG;QACH,2BAA2B;QAC3B,0CAA0C;QAC1C,6CAA6C;QAC7C,gCAAgC;QAChC,2CAA2C;QAC3C,0DAA0D;QAC1D,GAAG;QACH,wBAAwB;QACxB,0CAA0C;QAC1C,6CAA6C;QAC7C,kCAAkC;QAClC,2CAA2C;QAC3C,wBAAwB;QACxB,yCAAyC;QACzC,mCAAmC;QACnC,sCAAsC;QACtC,4BAA4B;QAC5B,0BAA0B;QAC1B,qCAAqC;QACrC,OAAO;QACP,GAAG;QACH,0DAA0D;QAC1D,uCAAuC;QACvC,iDAAiD;QACjD,kDAAkD;QAClD,WAAW;QACX,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/beacon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAgB,KAAK,MAAM,EAA6C,MAAM,WAAW,CAAC;AAKjG,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,WAAW,EAAE,KAAK,GAAG,gBAAgB,GAAG,aAAa,GAAG,UAAU,CAAC;IACnE,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kFAAkF;IAClF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAqDD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;8CAC0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;0EAC0E;AAC1E,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAkGhF;AAED;;;;;;;;qCAQqC;AACrC,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAwBvM;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnD;AAED,8BAA8B;AAC9B,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAG7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/beacon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAgB,KAAK,MAAM,EAA6C,MAAM,WAAW,CAAC;AAMjG,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,WAAW,EAAE,KAAK,GAAG,gBAAgB,GAAG,aAAa,GAAG,UAAU,CAAC;IACnE,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kFAAkF;IAClF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AA8GD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;8CAC0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;0EAC0E;AAC1E,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuGhF;AAED;;;;;;;;qCAQqC;AACrC,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAwBvM;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnD;AAED,8BAA8B;AAC9B,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAG7D"}
@@ -41,6 +41,7 @@ import { createServer } from "node:http";
41
41
  import { networkInterfaces } from "node:os";
42
42
  import { createHash } from "node:crypto";
43
43
  import { encodeQRReal } from "../synapse/qr_real.js";
44
+ import { renderBeaconHtmlPage } from "./_page_template.js";
44
45
  const DEFAULT_PORT = 7741;
45
46
  function detectLanIPs() {
46
47
  const out = [];
@@ -60,35 +61,95 @@ function detectLanIPs() {
60
61
  function escapeHtml(s) {
61
62
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
62
63
  }
64
+ function vendorMeta(vendor) {
65
+ const v = vendor.toLowerCase();
66
+ if (v.includes("claude") || v.includes("anthropic"))
67
+ return { name: "Claude", url: "https://claude.ai/new", deeplink: null };
68
+ if (v.includes("gpt") || v.includes("chatgpt") || v.includes("openai"))
69
+ return { name: "ChatGPT", url: "https://chatgpt.com/", deeplink: null };
70
+ if (v.includes("gemini") || v.includes("google"))
71
+ return { name: "Gemini", url: "https://gemini.google.com/app", deeplink: null };
72
+ if (v.includes("perplexity"))
73
+ return { name: "Perplexity", url: "https://perplexity.ai/", deeplink: null };
74
+ if (v.includes("copilot"))
75
+ return { name: "Copilot", url: "https://copilot.microsoft.com/", deeplink: null };
76
+ return { name: "your AI app", url: "https://www.google.com/search?q=ai+chat", deeplink: null };
77
+ }
63
78
  function renderBeaconPage(payload, vendor, label) {
64
- const hint = vendor.toLowerCase().includes("claude") ? "claude.ai"
65
- : vendor.toLowerCase().includes("gpt") || vendor.toLowerCase().includes("chatgpt") ? "chatgpt.com"
66
- : vendor.toLowerCase().includes("gemini") ? "gemini.google.com"
67
- : "your AI app";
79
+ // v2.9.4: full bilingual TH/EN page lives in _page_template.ts so this
80
+ // file stays focused on the server + path-bundle logic.
81
+ return renderBeaconHtmlPage(payload, vendorMeta(vendor), label);
82
+ }
83
+ function renderBeaconPageLegacy(payload, vendor, label) {
84
+ const meta = vendorMeta(vendor);
85
+ // v2.9.3 BEACON page upgrade:
86
+ // - Plaintext soul prompt (no AES-256-GCM nonsense — Gemini Free can't decrypt anyway)
87
+ // - Big copy button + visible status
88
+ // - Vendor-specific deeplink button (Open Gemini app / ChatGPT / Claude)
89
+ // - Mobile-first responsive CSS
90
+ // - LIVE STATE block visible at top so receiving AI reads current version
68
91
  return `<!doctype html>
69
92
  <html><head>
70
93
  <meta charset="utf-8">
71
94
  <meta name="viewport" content="width=device-width,initial-scale=1">
72
95
  <title>${escapeHtml(label)}</title>
73
96
  <style>
74
- body{font-family:system-ui,sans-serif;max-width:680px;margin:14px auto;padding:0 12px;line-height:1.5;color:#202124}
75
- h1{font-size:1.1em}
76
- pre{white-space:pre-wrap;word-break:break-word;background:#f4f4f4;padding:12px;border-radius:8px;font-size:.85em;max-height:50vh;overflow:auto}
77
- button{font-size:1em;padding:12px 18px;border:0;border-radius:8px;background:#1a73e8;color:#fff;cursor:pointer;margin:6px 0}
78
- button:active{background:#0d47a1}
79
- .ok{color:#137333;font-weight:bold}
97
+ *{box-sizing:border-box}
98
+ body{font-family:system-ui,-apple-system,sans-serif;max-width:680px;margin:0 auto;padding:14px;line-height:1.5;color:#202124;background:#fafafa}
99
+ h1{font-size:1.2em;margin:.2em 0}
100
+ h2{font-size:1em;color:#555;margin-top:1.4em}
101
+ pre{white-space:pre-wrap;word-break:break-word;background:#fff;border:1px solid #e0e0e0;padding:12px;border-radius:8px;font-size:.78em;max-height:38vh;overflow:auto}
102
+ .row{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}
103
+ .btn{flex:1 1 200px;font-size:1.05em;padding:14px 18px;border:0;border-radius:10px;color:#fff;cursor:pointer;font-weight:600;text-align:center;text-decoration:none;display:inline-block}
104
+ .btn-primary{background:#1a73e8}
105
+ .btn-primary:active{background:#0d47a1}
106
+ .btn-vendor{background:#137333}
107
+ .btn-vendor:active{background:#0b5a25}
108
+ .status{margin:8px 0;font-weight:600}
109
+ .ok{color:#137333}
110
+ .err{color:#c5221f}
80
111
  small{color:#555}
81
- a{color:#1a73e8}
112
+ details{margin:14px 0}
113
+ .footer{margin-top:24px;padding-top:12px;border-top:1px solid #e0e0e0;color:#777;font-size:.85em}
82
114
  </style></head><body>
83
115
  <h1>${escapeHtml(label)}</h1>
84
- <p><small>Mneme cross-device handoff. Self-contained no Mneme install needed on this device.</small></p>
85
- <p><b>Step 1</b> — Tap the button to copy the soul prompt.</p>
86
- <button id="cp" onclick="navigator.clipboard.writeText(document.getElementById('p').textContent).then(()=>{document.getElementById('s').textContent='Copied! Now paste into ${escapeHtml(hint)}.';document.getElementById('s').className='ok'})">Copy soul prompt</button>
87
- <p id="s"></p>
88
- <p><b>Step 2</b> — Open <b><a href="https://${escapeHtml(hint)}" target="_blank">${escapeHtml(hint)}</a></b> and paste.</p>
89
- <details><summary>Show the soul prompt</summary>
116
+ <p><small>Mneme cross-device brain transfer. No app install needed on this device. Tap the buttons below in order.</small></p>
117
+
118
+ <h2>Step 1 Copy the brain</h2>
119
+ <div class="row">
120
+ <button id="cp" class="btn btn-primary" onclick="copyAndStatus()">📋 Copy soul prompt</button>
121
+ </div>
122
+ <p class="status" id="s"></p>
123
+
124
+ <h2>Step 2 — Open ${escapeHtml(meta.name)} and paste</h2>
125
+ <div class="row">
126
+ <a href="${escapeHtml(meta.url)}" target="_blank" rel="noopener" class="btn btn-vendor">🚀 Open ${escapeHtml(meta.name)}</a>
127
+ </div>
128
+ <p><small>After ${escapeHtml(meta.name)} opens, long-press the message input → Paste → Send. The receiving AI will read the LIVE STATE block at the top of the prompt and continue your conversation with current Mneme context.</small></p>
129
+
130
+ <details><summary>Show / verify the soul prompt</summary>
90
131
  <pre id="p">${escapeHtml(payload)}</pre>
91
132
  </details>
133
+
134
+ <div class="footer">
135
+ Served by Mneme BEACON · ephemeral local server · auto-stops after 10 min idle · <span id="ts"></span>
136
+ </div>
137
+
138
+ <script>
139
+ function copyAndStatus(){
140
+ const el = document.getElementById('p');
141
+ const s = document.getElementById('s');
142
+ if (!navigator.clipboard) { s.textContent = '⚠ Browser does not support auto-copy. Long-press the soul prompt below + Copy manually.'; s.className = 'status err'; return; }
143
+ navigator.clipboard.writeText(el.textContent).then(()=>{
144
+ s.textContent = '✓ Copied! Tap "Open ${meta.name.replace(/'/g, "\\'")}" above, then paste in the chat box.';
145
+ s.className = 'status ok';
146
+ }, (err)=>{
147
+ s.textContent = '⚠ Copy failed: ' + err.message + ' — long-press the soul prompt below + Copy manually.';
148
+ s.className = 'status err';
149
+ });
150
+ }
151
+ document.getElementById('ts').textContent = new Date().toLocaleString();
152
+ </script>
92
153
  </body></html>`;
93
154
  }
94
155
  /** Spawn a local HTTP server that serves the soul prompt at one URL.
@@ -139,7 +200,12 @@ export async function spawnBeacon(input) {
139
200
  server = null;
140
201
  actualPort = null;
141
202
  }
142
- const lanIPs = detectLanIPs();
203
+ // v2.9.3: if caller bound to 127.0.0.1 only, the server is NOT reachable
204
+ // on LAN IPs — don't lie to the AI agent by advertising URLs that will
205
+ // throw ECONNREFUSED when scanned. Only surface LAN IPs when we bound
206
+ // to a wildcard or all-interfaces address.
207
+ const lanReachable = bindHost === "0.0.0.0" || bindHost === "::" || bindHost === "" || bindHost === "::0";
208
+ const lanIPs = lanReachable ? detectLanIPs() : [];
143
209
  const paths = [];
144
210
  // PATH 1 — clipboard (same-device 1-click)
145
211
  paths.push({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/beacon/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA8BrD,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,SAAS,YAAY;IACnB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,QAAQ;gBAAE,SAAS;YACzB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,MAAc,EAAE,KAAa;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW;QAChE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa;YAClG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB;gBAC/D,CAAC,CAAC,aAAa,CAAC;IAClB,OAAO;;;;SAIA,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;MAWpB,UAAU,CAAC,KAAK,CAAC;;;8KAGuJ,UAAU,CAAC,IAAI,CAAC;;8CAEhJ,UAAU,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,IAAI,CAAC;;cAErF,UAAU,CAAC,OAAO,CAAC;;eAElB,CAAC;AAChB,CAAC;AAiBD;0EAC0E;AAC1E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjG,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,sBAAsB,CAAC;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAErD,gEAAgE;IAChE,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YAClE,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YAC3B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC;gBAChG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9B,MAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,UAAU,GAAI,MAAM,CAAC,OAAO,EAA8B,EAAE,IAAI,IAAI,UAAU,CAAC;QAC/E,gBAAgB;QAChB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,MAAM,EAAE,CAAC;gBACxC,IAAI,CAAC;oBAAC,MAAM,EAAE,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;gBACtE,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,MAAM,GAAG,IAAI,CAAC;QACd,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,2CAA2C;IAC3C,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,cAAc,MAAM,mCAAmC;QAC9D,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,aAAa;QAC1B,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,kCAAkC;IAClC,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;QACzB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,UAAU,EAAE,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,WAAW,EAAE,EAAE;gBACnB,KAAK,EAAE,wBAAwB,GAAG,EAAE;gBACpC,OAAO,EAAE,GAAG;gBACZ,WAAW,EAAE,KAAK;gBAClB,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,mEAAmE;YACnE,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,6BAA6B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9F,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,UAAU,EAAE,EAAE;oBAClB,KAAK,EAAE,oCAAoC;oBAC3C,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,gBAAgB;oBAC7B,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,2CAA2C;QAClD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,IAAI,EAAE,UAAU;QAChB,MAAM;QACN,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;AACJ,CAAC;AAED;;;;;;;;qCAQqC;AACrC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,IAA6E;IACjI,MAAM,OAAO,GAAG,IAAI,EAAE,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACpD,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7C,8DAA8D;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,4BAA4B,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE,YAAY,EAAE,kBAAkB,EAAE;YAClG,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,6BAA6B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,qBAAqB,CAAC,CAAe;IACnD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9E,OAAO,kBAAkB,CAAC,CAAC,KAAK,MAAM,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/beacon/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.9.2",
3
+ "version": "2.9.4",
4
4
  "description": "Core indexing, retrieval, and graph engine for Mneme",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",