@mneme-ai/core 2.9.3 → 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.
- package/dist/beacon/_page_template.d.ts +15 -0
- package/dist/beacon/_page_template.d.ts.map +1 -0
- package/dist/beacon/_page_template.js +195 -0
- package/dist/beacon/_page_template.js.map +1 -0
- package/dist/beacon/index.d.ts.map +1 -1
- package/dist/beacon/index.js +6 -0
- package/dist/beacon/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
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":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/beacon/index.js
CHANGED
|
@@ -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 = [];
|
|
@@ -75,6 +76,11 @@ function vendorMeta(vendor) {
|
|
|
75
76
|
return { name: "your AI app", url: "https://www.google.com/search?q=ai+chat", deeplink: null };
|
|
76
77
|
}
|
|
77
78
|
function renderBeaconPage(payload, vendor, label) {
|
|
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) {
|
|
78
84
|
const meta = vendorMeta(vendor);
|
|
79
85
|
// v2.9.3 BEACON page upgrade:
|
|
80
86
|
// - Plaintext soul prompt (no AES-256-GCM nonsense — Gemini Free can't decrypt anyway)
|
package/dist/beacon/index.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/beacon/index.ts"],"names":[],"mappings":"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"}
|