@robono/server 0.21.0 → 0.22.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.
- package/CHANGELOG.md +8 -0
- package/README.md +30 -2
- package/SBOM.spdx.json +9 -9
- package/dist/messenger-install-cli.js +23 -6
- package/dist/messenger-install-cli.js.map +1 -1
- package/dist/messenger-install.d.ts +11 -1
- package/dist/messenger-install.d.ts.map +1 -1
- package/dist/messenger-install.js +226 -57
- package/dist/messenger-install.js.map +1 -1
- package/dist/messenger-node.d.ts +14 -0
- package/dist/messenger-node.d.ts.map +1 -0
- package/dist/messenger-node.js +127 -0
- package/dist/messenger-node.js.map +1 -0
- package/dist/messenger-upgrade.d.ts +21 -0
- package/dist/messenger-upgrade.d.ts.map +1 -0
- package/dist/messenger-upgrade.js +136 -0
- package/dist/messenger-upgrade.js.map +1 -0
- package/dist/messenger-vite-templates.d.ts +12 -0
- package/dist/messenger-vite-templates.d.ts.map +1 -0
- package/dist/messenger-vite-templates.js +89 -0
- package/dist/messenger-vite-templates.js.map +1 -0
- package/legacy/0.21.0/messenger-connected-templates.js +138 -0
- package/legacy/0.21.0/messenger-customer-templates.js +111 -0
- package/legacy/0.21.0/messenger-init.js +121 -0
- package/legacy/0.21.0/messenger-install.js +243 -0
- package/legacy/0.21.0/messenger-preview-template.js +43 -0
- package/legacy/0.21.0/package.json +1 -0
- package/package.json +11 -2
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { viteMessengerFiles } from './messenger-vite-templates.js';
|
|
1
3
|
import { messengerPreviewTemplates } from './messenger-preview-template.js';
|
|
2
|
-
import { readFile, writeFile, mkdir, lstat, realpath, unlink } from 'node:fs/promises';
|
|
3
|
-
import { resolve, join, dirname, relative } from 'node:path';
|
|
4
|
+
import { readFile, writeFile, mkdir, lstat, realpath, unlink, rename } from 'node:fs/promises';
|
|
5
|
+
import { resolve, join, dirname, relative, isAbsolute } from 'node:path';
|
|
4
6
|
import spawn from 'cross-spawn';
|
|
5
7
|
import { messengerStarterFiles } from './messenger-init.js';
|
|
6
|
-
|
|
8
|
+
export const messengerInstallerVersion = '0.22.0';
|
|
9
|
+
export const generatedHash = (content) => createHash('sha256').update(content).digest('hex');
|
|
10
|
+
export function generatedKey(file, client, server) {
|
|
11
|
+
const local = relative(server, file);
|
|
12
|
+
const scope = server !== client && !isAbsolute(local) && local !== '..' && !local.startsWith('../') && !local.startsWith('..\\') ? 'server' : 'client';
|
|
13
|
+
return scope + ':' + relative(scope === 'server' ? server : client, file).split('\\').join('/');
|
|
14
|
+
}
|
|
15
|
+
function recordGeneratedFiles(files, client, server) {
|
|
16
|
+
const metadata = files.find(file => file.path === join(client, '.robono/setup.json'));
|
|
17
|
+
const setup = JSON.parse(metadata.content);
|
|
18
|
+
setup.generated = Object.fromEntries(files.filter(file => file !== metadata && !file.path.endsWith('.before-install')).map(file => [generatedKey(file.path, client, server), generatedHash(file.content)]));
|
|
19
|
+
metadata.content = JSON.stringify(setup, null, 2) + '\n';
|
|
20
|
+
}
|
|
21
|
+
export async function exists(file) { try {
|
|
7
22
|
await lstat(file);
|
|
8
23
|
return true;
|
|
9
24
|
}
|
|
@@ -22,7 +37,7 @@ async function project(directory) {
|
|
|
22
37
|
const pkg = JSON.parse(await readFile(join(root, 'package.json'), 'utf8'));
|
|
23
38
|
return { root, pkg, deps: { ...pkg.devDependencies, ...pkg.dependencies } };
|
|
24
39
|
}
|
|
25
|
-
async function safePath(file) {
|
|
40
|
+
export async function safePath(file) {
|
|
26
41
|
let part = resolve(file);
|
|
27
42
|
while (true) {
|
|
28
43
|
if (await exists(part)) {
|
|
@@ -36,6 +51,19 @@ async function safePath(file) {
|
|
|
36
51
|
part = parent;
|
|
37
52
|
}
|
|
38
53
|
}
|
|
54
|
+
export async function readMessengerSetup(file) {
|
|
55
|
+
await safePath(file);
|
|
56
|
+
const info = await lstat(file);
|
|
57
|
+
if (!info.isFile() || info.size > 1048576)
|
|
58
|
+
throw Error('Use a regular, valid Robono setup file.');
|
|
59
|
+
const text = await readFile(file, 'utf8');
|
|
60
|
+
try {
|
|
61
|
+
return { text, setup: JSON.parse(text) };
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw Error('Saved Robono setup is not valid JSON. It was not changed.');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
39
67
|
async function appRoot(root) {
|
|
40
68
|
for (const base of ['src', ''])
|
|
41
69
|
if (await exists(join(root, base, 'app'))) {
|
|
@@ -64,14 +92,19 @@ async function manager(root, pkg) {
|
|
|
64
92
|
return result;
|
|
65
93
|
}
|
|
66
94
|
export async function planMessengerInstallation(options) {
|
|
67
|
-
return
|
|
95
|
+
return buildMessengerInstallation(options, 'new');
|
|
68
96
|
}
|
|
69
|
-
async function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
97
|
+
export async function buildMessengerInstallation(options, mode) {
|
|
98
|
+
const resume = mode === 'resume';
|
|
99
|
+
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(Number);
|
|
100
|
+
if (nodeMajor < 22 || nodeMajor === 22 && nodeMinor < 12)
|
|
101
|
+
throw Error('Use Node.js 22.12 or later for automatic installation.');
|
|
102
|
+
const client = await project(options.project);
|
|
103
|
+
if (client.deps.vite && client.deps.react && !client.deps.next && !client.deps.expo)
|
|
104
|
+
return planViteInstallation(options, client, mode);
|
|
105
|
+
const platform = client.deps.expo ? 'expo' : client.deps.next ? 'web' : null;
|
|
73
106
|
if (!platform)
|
|
74
|
-
throw Error('Automatic installation supports Next.js App Router and Expo. For other projects use robono-messenger-init.');
|
|
107
|
+
throw Error('Automatic installation supports Next.js App Router, React with Vite, and Expo. For other projects use robono-messenger-init.');
|
|
75
108
|
if (platform === 'expo' && !/^[~^]?(55|56)\./.test(client.deps.expo))
|
|
76
109
|
throw Error('The supplied Expo messenger supports Expo 55–56. Keep your current app unchanged and check the mobile installation guide.');
|
|
77
110
|
if (platform === 'expo' && !options.serverProject)
|
|
@@ -110,11 +143,11 @@ async function createInstallationPlan(options, resume) {
|
|
|
110
143
|
'Keep provider credentials and the Robono key on the server. The installer never reads or edits your .env files.',
|
|
111
144
|
'Mount CustomerMessenger with your existing sign-in client and contacts. Account wiring is included.',
|
|
112
145
|
'Connect website alerts or Apple/Google credentials in Robono → Your app → Message notifications. Chat works before alerts are configured.'];
|
|
113
|
-
const setup = { schema:
|
|
146
|
+
const setup = { schema: 3, installerVersion: '0.22.0', layout: platform === 'web' ? 'next' : 'expo', clientBase, serverBase, platform, auth, companyName: options.companyName, origin: options.origin, serverProject: relative(client.root, server.root) || '.', dependencies: 'pending', checks: { files: 'installed', permissions: 'needs-connection', serverKey: 'needs-server-environment', contacts: 'needs-connection', notifications: 'needs-configuration', liveConnection: 'not-tested' } };
|
|
114
147
|
files.push({ path: join(client.root, '.robono/setup.json'), content: JSON.stringify(setup, null, 2) + '\n' });
|
|
115
|
-
files.push({ path: join(client.root, '.robono/SETUP.md'), content: '# Connect your messenger\n\n' + notes.map(x => '- ' + x).join('\n') + '\n\n## Connect your screen\n' + (auth === 'custom' ? 'Implement RobonoAccounts from client/ConnectedRobonoChat.tsx using your existing sign-in. Render <CustomerMessenger accounts={yourAccounts} contacts={yourContacts}/>.' : 'Import CustomerMessenger from the generated client/CustomerMessenger.tsx. Render <CustomerMessenger auth={yourExistingSignInClient} contacts={yourContacts}/>.') + ' Give the messenger an area with a height. Keep it mounted in your signed-in application. It follows account changes; names and avatars update without restarting chat. For Supabase use its client; for Firebase use its Auth instance.\n\n## Allow the right people\nConnect authorize in robono-access.ts to current account eligibility, suspension and conversation permissions. It denies access until implemented. When a friendship changes, call synchronizeFriendship(getMessenger(), friendship) on your server. Use revisions from your database; group membership uses getMessenger().robono.setGroup. Never use an always-allow function.\n\n## Sign-out\nThe messenger account menu clears local content and unregisters notifications before provider sign-out. If your own account menu signs out first, provider events still clear the visible chat. Keep account suspension and relationship revocation synchronized with Robono; an expired session cannot reliably unregister a remote device. Never substitute another account’s token.\n\n## Check the connection\nDuring development, add setupChecks to CustomerMessenger and press Check connection after signing in to your app. It uses your current login; no copied tokens are needed. It checks settings, available chats and notification configuration without sending a message. This optional panel is hidden in production.\n\nRun robono-messenger-install --check for the local checklist. For additional command-line security checks, set ROBONO_MESSENGER_URL, ROBONO_WEBSITE_ORIGIN and ROBONO_TEST_USER_TOKEN locally. Add --json for a shareable report without secrets. No local checker can prove your complete permission rules; test denied accounts and cross-account access too.\n\n## Interrupted installation\nRun robono-messenger-install --resume from the same project. It reinstalls the required packages without replacing your integration code, screens or environment files.\n\n## Server configuration\nSet ROBONO_API_KEY privately on the server. Use ROBONO_ALLOWED_ORIGINS for your production website addresses instead of editing generated code. Never use a wildcard. Existing Next.js Supabase public settings are reused; see server.env.example.\n\n## Notifications\nFor website alerts configure your HTTPS origin and chat path. For iPhone, upload your APNs .p8 key, key ID, Team ID and Bundle ID in Robono. For Android, configure google-services.json in your app and upload the Firebase messaging service account privately in Robono. Never put private keys in client code. Build both apps after native dependency changes.\n\n## Local preview\nOpen /robono-preview on your Next.js development server. It uses the actual web messenger with fictional Alice and Bob and local text only. It sends no customer requests and returns 404 in production.\n' });
|
|
148
|
+
files.push({ path: join(client.root, '.robono/SETUP.md'), content: '# Connect your messenger\n\n' + notes.map(x => '- ' + x).join('\n') + '\n\n## Connect your screen\n' + (auth === 'custom' ? 'Implement RobonoAccounts from client/ConnectedRobonoChat.tsx using your existing sign-in. Render <CustomerMessenger accounts={yourAccounts} contacts={yourContacts}/>.' : 'Import CustomerMessenger from the generated client/CustomerMessenger.tsx. Render <CustomerMessenger auth={yourExistingSignInClient} contacts={yourContacts}/>.') + ' Give the messenger an area with a height. Keep it mounted in your signed-in application. It follows account changes; names and avatars update without restarting chat. For Supabase use its client; for Firebase use its Auth instance.\n\n## Allow the right people\nConnect authorize in robono-access.ts to current account eligibility, suspension and conversation permissions. It denies access until implemented. When a friendship changes, call synchronizeFriendship(getMessenger(), friendship) on your server. Use revisions from your database; group membership uses getMessenger().robono.setGroup. Never use an always-allow function.\n\n## Sign-out\nThe messenger account menu clears local content and unregisters notifications before provider sign-out. If your own account menu signs out first, provider events still clear the visible chat. Keep account suspension and relationship revocation synchronized with Robono; an expired session cannot reliably unregister a remote device. Never substitute another account’s token.\n\n## Check the connection\nDuring development, add setupChecks to CustomerMessenger and press Check connection after signing in to your app. It uses your current login; no copied tokens are needed. It checks settings, available chats and notification configuration without sending a message. This optional panel is hidden in production.\n\nRun robono-messenger-install --check for the local checklist. For additional command-line security checks, set ROBONO_MESSENGER_URL, ROBONO_WEBSITE_ORIGIN and ROBONO_TEST_USER_TOKEN locally. Add --json for a shareable report without secrets. No local checker can prove your complete permission rules; test denied accounts and cross-account access too.\n\n## Safe upgrades\nRun robono-messenger-install --upgrade --dry-run to review, then --upgrade to apply. Unchanged generated files are backed up and updated. Edited files stay untouched; review .robono/upgrade-report.json for proposed changes.\n\n## Interrupted installation\nRun robono-messenger-install --resume from the same project. It reinstalls the required packages without replacing your integration code, screens or environment files.\n\n## Server configuration\nSet ROBONO_API_KEY privately on the server. Use ROBONO_ALLOWED_ORIGINS for your production website addresses instead of editing generated code. Never use a wildcard. Existing Next.js Supabase public settings are reused; see server.env.example.\n\n## Notifications\nFor website alerts configure your HTTPS origin and chat path. For iPhone, upload your APNs .p8 key, key ID, Team ID and Bundle ID in Robono. For Android, configure google-services.json in your app and upload the Firebase messaging service account privately in Robono. Never put private keys in client code. Build both apps after native dependency changes.\n\n## Local preview\nOpen /robono-preview on your Next.js development server. It uses the actual web messenger with fictional Alice and Bob and local text only. It sends no customer requests and returns 404 in production.\n' });
|
|
116
149
|
files.push({ path: join(server.root, '.robono/server.env.example'), content: templates['.env.example'] });
|
|
117
|
-
const serverPackages = ['@robono/server@^0.
|
|
150
|
+
const serverPackages = ['@robono/server@^0.22.0', ...(platform === 'expo' ? ['@robono/messaging@^0.4.1', '@robono/messaging-web@^0.6.0'] : []), ...(auth === 'supabase' ? ['@supabase/supabase-js@^2'] : auth === 'firebase' ? ['firebase-admin@^14'] : [])];
|
|
118
151
|
const clientPackages = ['@robono/messaging@^0.4.1', `@robono/messaging-${platform === 'web' ? 'web' : 'react-native'}@^0.6.0`, ...(auth === 'supabase' ? ['@supabase/supabase-js@^2'] : auth === 'firebase' ? ['firebase@^13'] : [])];
|
|
119
152
|
const packageName = (spec) => spec.slice(0, spec.lastIndexOf('@'));
|
|
120
153
|
const keepExistingProvider = (spec, deps) => !['firebase', 'firebase-admin', '@supabase/supabase-js'].includes(packageName(spec)) || !deps[packageName(spec)];
|
|
@@ -148,31 +181,50 @@ async function createInstallationPlan(options, resume) {
|
|
|
148
181
|
}
|
|
149
182
|
notes.push('Added missing Expo plugins; existing permission wording is preserved. Rebuild both iPhone and Android after native dependency changes.');
|
|
150
183
|
}
|
|
151
|
-
if (
|
|
184
|
+
if (mode === 'new')
|
|
152
185
|
for (const file of files) {
|
|
153
186
|
await safePath(file.path);
|
|
154
187
|
if (await exists(file.path))
|
|
155
188
|
throw Error(`Already exists: ${file.path}. Nothing was changed. Use --check to see the remaining steps, or --resume to finish package installation.`);
|
|
156
189
|
}
|
|
190
|
+
if (!resume)
|
|
191
|
+
recordGeneratedFiles(files, client.root, server.root);
|
|
157
192
|
return { platform, auth, files: resume ? [] : files, replacements: resume ? [] : replacements, commands, notes: resume ? ['Resume package installation. Existing integration files, permission code, screens and environment files are preserved.'] : notes, setupFile: join(client.root, '.robono/setup.json') };
|
|
158
193
|
}
|
|
159
194
|
/** Reconstruct trusted package commands; never execute commands from saved metadata. */
|
|
160
195
|
export async function planMessengerInstallationResume(directory) {
|
|
161
196
|
const root = resolve(directory), setupFile = join(root, '.robono/setup.json');
|
|
162
197
|
await safePath(setupFile);
|
|
163
|
-
const setup =
|
|
164
|
-
if (![1, 2].includes(setup.schema) || !['web', 'expo'].includes(setup.platform) || !['custom', 'supabase', 'firebase'].includes(setup.auth) || typeof setup.origin !== 'string' || typeof setup.serverProject !== 'string' || setup.companyName !== undefined && typeof setup.companyName !== 'string')
|
|
198
|
+
const { setup } = await readMessengerSetup(setupFile);
|
|
199
|
+
if (![1, 2, 3].includes(setup.schema) || !['web', 'expo'].includes(setup.platform) || !['custom', 'supabase', 'firebase'].includes(setup.auth) || typeof setup.origin !== 'string' || typeof setup.serverProject !== 'string' || setup.companyName !== undefined && typeof setup.companyName !== 'string')
|
|
165
200
|
throw Error('Invalid saved setup. Keep your integration files and run --check.');
|
|
166
|
-
const server = resolve(root, setup.serverProject), base = await appRoot(server);
|
|
167
|
-
const clientBase = setup.platform === 'web' ? base : (await exists(join(root, 'src')) ? 'src' : '');
|
|
168
|
-
for (const file of [join(root, clientBase, 'robono/client/ConnectedRobonoChat.tsx'), join(server, base, 'app/api/robono/route.ts')]) {
|
|
201
|
+
const server = resolve(root, setup.serverProject), base = setup.layout === 'vite' ? '' : await appRoot(server);
|
|
202
|
+
const clientBase = setup.layout === 'vite' ? setup.clientBase : setup.platform === 'web' ? base : (await exists(join(root, 'src')) ? 'src' : '');
|
|
203
|
+
for (const file of [join(root, clientBase, 'robono/client/ConnectedRobonoChat.tsx'), setup.layout === 'vite' ? join(root, '.robono/server/robono.ts') : join(server, base, 'app/api/robono/route.ts')]) {
|
|
169
204
|
await safePath(file);
|
|
170
205
|
if (!await exists(file))
|
|
171
206
|
throw Error('An integration file is missing. Restore it before resuming; existing code was not changed.');
|
|
172
207
|
}
|
|
173
|
-
return
|
|
208
|
+
return buildMessengerInstallation({ project: root, ...(setup.platform === 'expo' ? { serverProject: server } : {}), origin: setup.origin, companyName: setup.companyName ?? 'Your company', auth: setup.auth }, 'resume');
|
|
174
209
|
}
|
|
175
|
-
|
|
210
|
+
async function replaceUnchanged(file) {
|
|
211
|
+
await safePath(file.path);
|
|
212
|
+
const info = await lstat(file.path);
|
|
213
|
+
if (!info.isFile() || info.nlink !== 1)
|
|
214
|
+
throw Error('Do not update a linked or non-regular file.');
|
|
215
|
+
const temporary = file.path + '.robono-' + randomUUID() + '.tmp';
|
|
216
|
+
try {
|
|
217
|
+
await writeFile(temporary, file.after, { flag: 'wx', mode: info.mode & 0o777 });
|
|
218
|
+
await safePath(file.path);
|
|
219
|
+
if (await readFile(file.path, 'utf8') !== file.before)
|
|
220
|
+
throw Error('A file changed during installation. Existing edits were preserved.');
|
|
221
|
+
await rename(temporary, file.path);
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
await unlink(temporary).catch(() => { });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** Preflight, exclusive installer lock, atomic replacements and recoverable rollback. */
|
|
176
228
|
export async function applyMessengerInstallation(plan, install = true) {
|
|
177
229
|
for (const file of plan.files) {
|
|
178
230
|
await safePath(file.path);
|
|
@@ -181,57 +233,103 @@ export async function applyMessengerInstallation(plan, install = true) {
|
|
|
181
233
|
}
|
|
182
234
|
for (const file of plan.replacements) {
|
|
183
235
|
await safePath(file.path);
|
|
236
|
+
const stat = await lstat(file.path);
|
|
237
|
+
if (!stat.isFile() || stat.nlink !== 1)
|
|
238
|
+
throw Error('Do not update a linked or non-regular file.');
|
|
184
239
|
if (await readFile(file.path, 'utf8') !== file.before)
|
|
185
240
|
throw Error('Project configuration changed after planning. Run the installer again.');
|
|
186
241
|
}
|
|
187
|
-
const
|
|
242
|
+
const lock = plan.setupFile ? join(dirname(plan.setupFile), 'install.lock') : undefined;
|
|
243
|
+
const lockContent = JSON.stringify({ pid: process.pid, id: randomUUID() });
|
|
244
|
+
if (lock) {
|
|
245
|
+
await safePath(lock);
|
|
246
|
+
await mkdir(dirname(lock), { recursive: true, mode: 0o700 });
|
|
247
|
+
if (await exists(lock)) {
|
|
248
|
+
let stale = false;
|
|
249
|
+
try {
|
|
250
|
+
const saved = JSON.parse(await readFile(lock, 'utf8'));
|
|
251
|
+
if (Number.isInteger(saved.pid) && saved.pid > 0) {
|
|
252
|
+
try {
|
|
253
|
+
process.kill(saved.pid, 0);
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
stale = error.code === 'ESRCH';
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch { }
|
|
261
|
+
if (!stale)
|
|
262
|
+
throw Error('Another installer may be running. Finish it before applying this plan.');
|
|
263
|
+
await unlink(lock);
|
|
264
|
+
}
|
|
265
|
+
await writeFile(lock, lockContent, { flag: 'wx', mode: 0o600 });
|
|
266
|
+
}
|
|
188
267
|
try {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
268
|
+
const written = [], replaced = [];
|
|
269
|
+
try {
|
|
270
|
+
for (const file of plan.files) {
|
|
271
|
+
await safePath(file.path);
|
|
272
|
+
await mkdir(dirname(file.path), { recursive: true, mode: 0o700 });
|
|
273
|
+
await writeFile(file.path, file.content, { flag: 'wx', mode: 0o600 });
|
|
274
|
+
written.push(file);
|
|
275
|
+
}
|
|
276
|
+
for (const file of plan.replacements) {
|
|
277
|
+
await replaceUnchanged(file);
|
|
278
|
+
replaced.push(file);
|
|
279
|
+
}
|
|
193
280
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
281
|
+
catch (error) {
|
|
282
|
+
let recoverable = true;
|
|
283
|
+
for (const file of [...replaced].reverse()) {
|
|
284
|
+
try {
|
|
285
|
+
await replaceUnchanged({ path: file.path, before: file.after, after: file.before });
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
recoverable = false;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
for (const file of written)
|
|
292
|
+
if (await readFile(file.path, 'utf8').catch(() => null) !== file.content)
|
|
293
|
+
recoverable = false;
|
|
294
|
+
if (recoverable)
|
|
295
|
+
for (const file of written)
|
|
296
|
+
await unlink(file.path);
|
|
297
|
+
if (!recoverable)
|
|
298
|
+
throw Error('Installation stopped because files changed during recovery. Your edits and available backups were preserved; review the upgrade report before retrying.');
|
|
299
|
+
throw error;
|
|
300
|
+
}
|
|
301
|
+
if (install)
|
|
302
|
+
for (const command of plan.commands)
|
|
303
|
+
await new Promise((done, fail) => {
|
|
304
|
+
const child = spawn(command.command, command.args, { cwd: command.cwd, stdio: 'inherit', shell: false, env: { ...process.env, npm_config_ignore_scripts: 'true', YARN_ENABLE_SCRIPTS: 'false' } });
|
|
305
|
+
child.on('error', () => fail(Error('Package installation could not start. Files are saved; fix the package-manager error and run robono-messenger-install --resume.')));
|
|
306
|
+
child.on('exit', code => code === 0 ? done() : fail(Error('Package installation did not finish. Files are saved; fix the package-manager error and run robono-messenger-install --resume.')));
|
|
307
|
+
});
|
|
308
|
+
if (install && plan.setupFile) {
|
|
309
|
+
const before = await readFile(plan.setupFile, 'utf8'), setup = JSON.parse(before);
|
|
310
|
+
setup.dependencies = 'installed';
|
|
311
|
+
await replaceUnchanged({ path: plan.setupFile, before, after: JSON.stringify(setup, null, 2) + '\n' });
|
|
199
312
|
}
|
|
200
313
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
await
|
|
204
|
-
for (const file of written)
|
|
205
|
-
await unlink(file);
|
|
206
|
-
throw e;
|
|
207
|
-
}
|
|
208
|
-
if (install)
|
|
209
|
-
for (const command of plan.commands)
|
|
210
|
-
await new Promise((resolve, reject) => {
|
|
211
|
-
const child = spawn(command.command, command.args, { cwd: command.cwd, stdio: 'inherit', shell: false, env: { ...process.env, npm_config_ignore_scripts: 'true', YARN_ENABLE_SCRIPTS: 'false' } });
|
|
212
|
-
child.on('error', () => reject(Error('Package installation could not start. Files are saved; fix the package-manager error and run robono-messenger-install --resume.')));
|
|
213
|
-
child.on('exit', code => code === 0 ? resolve() : reject(Error('Package installation did not finish. Files are saved; fix the package-manager error and run robono-messenger-install --resume.')));
|
|
214
|
-
});
|
|
215
|
-
if (install && plan.setupFile) {
|
|
216
|
-
await safePath(plan.setupFile);
|
|
217
|
-
const setup = JSON.parse(await readFile(plan.setupFile, 'utf8'));
|
|
218
|
-
setup.dependencies = 'installed';
|
|
219
|
-
await writeFile(plan.setupFile, JSON.stringify(setup, null, 2) + '\n');
|
|
314
|
+
finally {
|
|
315
|
+
if (lock && await readFile(lock, 'utf8').catch(() => null) === lockContent)
|
|
316
|
+
await unlink(lock);
|
|
220
317
|
}
|
|
221
318
|
}
|
|
222
319
|
export async function messengerInstallationChecklist(directory) {
|
|
223
320
|
const root = resolve(directory), file = join(root, '.robono/setup.json');
|
|
224
321
|
if (!await exists(file))
|
|
225
|
-
return [{ name: 'Install files', status: 'needs-action', detail: 'Run robono-messenger-install in your Next.js or Expo project.' }];
|
|
226
|
-
const setup =
|
|
227
|
-
const server = resolve(root, setup.serverProject), base = await appRoot(server);
|
|
228
|
-
const permissionFile = join(server, base, 'robono/server/robono-access.ts');
|
|
322
|
+
return [{ name: 'Install files', status: 'needs-action', detail: 'Run robono-messenger-install in your Next.js, React/Vite or Expo project.' }];
|
|
323
|
+
const { setup } = await readMessengerSetup(file);
|
|
324
|
+
const server = resolve(root, setup.serverProject), base = setup.layout === 'vite' ? '' : await appRoot(server);
|
|
325
|
+
const permissionFile = setup.layout === 'vite' ? join(root, '.robono/server/robono-access.ts') : join(server, base, 'robono/server/robono-access.ts');
|
|
229
326
|
const permission = await readFile(permissionFile, 'utf8').catch(() => 'Connect your existing messaging permission');
|
|
230
327
|
const missingPermission = permission.includes('Connect your existing messaging permission');
|
|
231
|
-
const clientBase = setup.platform === 'web' ? base : (await exists(join(root, 'src')) ? 'src' : '');
|
|
232
|
-
const complete = await exists(join(root, clientBase, 'robono/client/ConnectedRobonoChat.tsx')) && await exists(join(server, base, 'app/api/robono/route.ts'));
|
|
328
|
+
const clientBase = setup.layout === 'vite' ? setup.clientBase : setup.platform === 'web' ? base : (await exists(join(root, 'src')) ? 'src' : '');
|
|
329
|
+
const complete = await exists(join(root, clientBase, 'robono/client/ConnectedRobonoChat.tsx')) && await exists(setup.layout === 'vite' ? join(root, '.robono/server/robono.ts') : join(server, base, 'app/api/robono/route.ts'));
|
|
233
330
|
return [
|
|
234
|
-
{ name: 'Prepared files', status: complete ? 'passed' : 'failed', detail: `${setup.platform === 'expo' ? 'Expo' : 'Next.js'}; ${setup.auth} sign-in.` },
|
|
331
|
+
{ name: 'Prepared files', status: complete ? 'passed' : 'failed', detail: `${setup.platform === 'expo' ? 'Expo' : setup.layout === 'vite' ? 'React + Vite' : 'Next.js'}; ${setup.auth} sign-in.` },
|
|
332
|
+
...(Array.isArray(setup.pendingReview) && setup.pendingReview.length ? [{ name: 'Upgrade review', status: 'needs-action', detail: 'Your edited files were preserved. Review .robono/upgrade-report.json and its proposed changes, then rerun --upgrade.' }] : []),
|
|
235
333
|
{ name: 'Package installation', status: setup.dependencies === 'installed' ? 'configured' : 'needs-action', detail: setup.dependencies === 'installed' ? 'The package manager completed. Use the in-app connection check next.' : 'Run robono-messenger-install --resume to finish installing packages without replacing your integration files.' },
|
|
236
334
|
{ name: 'Account permissions', status: missingPermission ? 'needs-action' : 'configured', detail: missingPermission ? 'Connect robono-access.ts to your current permission rules. The live checker verifies a test account.' : 'Permission code was edited. Verify allowed and denied accounts; file inspection cannot prove your rules.' },
|
|
237
335
|
{ name: 'Server key', status: 'needs-action', detail: 'Set ROBONO_API_KEY on the server. This command does not read or print secrets.' },
|
|
@@ -240,4 +338,75 @@ export async function messengerInstallationChecklist(directory) {
|
|
|
240
338
|
{ name: 'Live connection', status: 'needs-action', detail: 'Set ROBONO_MESSENGER_URL, ROBONO_WEBSITE_ORIGIN and ROBONO_TEST_USER_TOKEN locally, then run robono-messenger-check.' },
|
|
241
339
|
];
|
|
242
340
|
}
|
|
341
|
+
async function planViteInstallation(options, client, mode) {
|
|
342
|
+
if (options.serverProject)
|
|
343
|
+
throw Error('React/Vite includes its own Node server connection. Omit --server-project; existing servers can use the supplied @robono/server/node handler.');
|
|
344
|
+
if (!client.deps['react-dom'])
|
|
345
|
+
throw Error('React/Vite installation needs react-dom in the website project.');
|
|
346
|
+
if (!options.auth && client.deps.firebase && client.deps['@supabase/supabase-js'])
|
|
347
|
+
throw Error('Both sign-in providers are installed. Choose --auth supabase, firebase or custom.');
|
|
348
|
+
const auth = options.auth ?? (client.deps['@supabase/supabase-js'] ? 'supabase' : client.deps.firebase ? 'firebase' : 'custom');
|
|
349
|
+
const provider = auth === 'supabase' ? '@supabase/supabase-js' : auth === 'firebase' ? 'firebase' : null;
|
|
350
|
+
if (provider && client.deps[provider]) {
|
|
351
|
+
const version = await readFile(join(client.root, 'node_modules', provider, 'package.json'), 'utf8').then(value => JSON.parse(value).version).catch(() => client.deps[provider]);
|
|
352
|
+
const major = Number(version.match(/^[~^]?(\d+)/)?.[1]);
|
|
353
|
+
if (!major || major < (auth === 'supabase' ? 2 : 9))
|
|
354
|
+
throw Error('Keep your existing sign-in unchanged and use --auth custom, or update the provider package separately.');
|
|
355
|
+
}
|
|
356
|
+
const viteVersion = await readFile(join(client.root, 'node_modules/vite/package.json'), 'utf8').then(value => JSON.parse(value).version).catch(() => client.deps.vite);
|
|
357
|
+
const parts = viteVersion.match(/^[~^]?(\d+)\.(\d+)\.(\d+)/)?.slice(1).map(Number);
|
|
358
|
+
const minimum = { 6: '6.4.5', 7: '7.3.7', 8: '8.3.5' };
|
|
359
|
+
if (!parts || !minimum[parts[0]])
|
|
360
|
+
throw Error('Automatic React setup supports Vite 6–8. Keep this project unchanged and use the generated-file connection for other versions.');
|
|
361
|
+
const patched = minimum[parts[0]], target = patched.split('.').map(Number);
|
|
362
|
+
const updateVite = parts[1] < target[1] || parts[1] === target[1] && parts[2] < target[2];
|
|
363
|
+
const clientBase = await exists(join(client.root, 'src')) ? 'src' : '';
|
|
364
|
+
const templates = messengerStarterFiles({ ...options, platform: 'web', framework: 'fetch', auth });
|
|
365
|
+
const files = [];
|
|
366
|
+
for (const [name, content] of Object.entries(templates)) {
|
|
367
|
+
if (name.startsWith('client/')) {
|
|
368
|
+
const vite = content.replaceAll("process.env.NODE_ENV==='development'", 'import.meta.env.DEV').replaceAll("process.env.NODE_ENV!=='development'", '!import.meta.env.DEV').replaceAll('import React,{', 'import {').replace(auth === 'custom' ? 'useMemo,type ComponentProps' : '__NO_CHANGE__', 'type ComponentProps');
|
|
369
|
+
files.push({ path: join(client.root, clientBase, 'robono', name), content: vite });
|
|
370
|
+
}
|
|
371
|
+
else if (name.startsWith('server/'))
|
|
372
|
+
files.push({ path: join(client.root, '.robono', name), content: content.replaceAll("'./robono-access'", "'./robono-access.js'").replaceAll('"./robono"', '"./robono.js"').replace('process.env.NEXT_PUBLIC_SUPABASE_URL', 'process.env.NEXT_PUBLIC_SUPABASE_URL??process.env.VITE_SUPABASE_URL').replace('process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY', 'process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY??process.env.VITE_SUPABASE_PUBLISHABLE_KEY??process.env.VITE_SUPABASE_ANON_KEY') });
|
|
373
|
+
}
|
|
374
|
+
const preview = messengerPreviewTemplates().client.replaceAll("process.env.NODE_ENV!=='development'", '!import.meta.env.DEV').replace('import React,{', 'import {');
|
|
375
|
+
files.push({ path: join(client.root, clientBase, 'robono/client/RobonoPreview.tsx'), content: preview });
|
|
376
|
+
for (const [name, content] of Object.entries(viteMessengerFiles({ ...options, platform: 'web', framework: 'fetch', auth }, clientBase)))
|
|
377
|
+
files.push({ path: join(client.root, name), content });
|
|
378
|
+
const notes = [`Detected React + Vite and ${auth} sign-in. Your app entry points and Vite configuration are preserved.`,
|
|
379
|
+
'Start both your existing website and the messaging route with npm --prefix .robono run dev. Open /robono-preview for the local two-person example.',
|
|
380
|
+
'Connect current account permissions in .robono/server/robono-access.ts. Missing permission code denies access.',
|
|
381
|
+
'Keep ROBONO_API_KEY and provider credentials in the server environment or your private root .env.local. Never prefix private keys with VITE_.',
|
|
382
|
+
'Mount CustomerMessenger with your existing sign-in client and contacts. Add setupChecks during development to check your signed-in connection.',
|
|
383
|
+
'Build: npm --prefix .robono run build. Production: npm --prefix .robono start. Deploy the project on a Node host with HTTPS; a static-only host cannot run the private server.',
|
|
384
|
+
'Set ROBONO_PUBLIC_ORIGIN and ROBONO_ALLOWED_ORIGINS to the real website address in production. Existing hosts may mount createMessengerNodeHandler before body parsers.'];
|
|
385
|
+
const setup = { schema: 3, installerVersion: messengerInstallerVersion, layout: 'vite', platform: 'web', auth, companyName: options.companyName, origin: options.origin, serverProject: '.', clientBase, serverBase: '.robono', dependencies: 'pending' };
|
|
386
|
+
files.push({ path: join(client.root, '.robono/setup.json'), content: JSON.stringify(setup, null, 2) + '\n' });
|
|
387
|
+
files.push({ path: join(client.root, '.robono/server.env.example'), content: templates['.env.example'] + 'ROBONO_PUBLIC_ORIGIN=' + options.origin + '\n' });
|
|
388
|
+
files.push({ path: join(client.root, '.robono/SETUP.md'), content: '# Connect your React website\n\n' + notes.map(note => '- ' + note).join('\n') + '\n\n## Connect accounts and conversations\n' + (auth === 'custom' ? 'Implement authenticate and authorize in .robono/server/robono-access.ts and the RobonoAccounts interface using your existing sign-in. Pass accounts to CustomerMessenger.' : 'Identity checks are supplied. Pass your existing sign-in client as auth to CustomerMessenger. Connect authorize in .robono/server/robono-access.ts to your current eligibility, suspension and conversation rules.') + ' Synchronize permitted friendships and group membership from your server using synchronizeFriendship and getMessenger().robono.setGroup. Give the component your contact names and avatars. Provider credentials and the Robono key remain server-only. Browser notifications are configured in Your app → Message notifications. No Apple/Google private key is required for browser alerts.\n' + '\n\n## Safe upgrades\nRun robono-messenger-install --upgrade. Unchanged generated files update automatically. Edited files are preserved and proposed updates are listed in .robono/upgrade-report.json. Review proposed changes before applying them. --resume finishes interrupted dependency installation; it does not overwrite your code.\n' });
|
|
389
|
+
const managerName = await manager(client.root, client.pkg);
|
|
390
|
+
const runtime = ['@robono/server@^0.22.0', '@robono/messaging@^0.4.1', '@robono/messaging-web@^0.6.0', ...(auth === 'supabase' && !client.deps['@supabase/supabase-js'] ? ['@supabase/supabase-js@^2'] : []), ...(auth === 'firebase' ? [...(!client.deps.firebase ? ['firebase@^13'] : []), ...(!client.deps['firebase-admin'] ? ['firebase-admin@^14'] : [])] : [])];
|
|
391
|
+
const dev = ['tsx@^4.23.15', 'typescript@^6', '@types/node@^22'].filter(spec => !client.deps[spec.slice(0, spec.lastIndexOf('@'))]);
|
|
392
|
+
if (updateVite) {
|
|
393
|
+
(client.pkg.dependencies?.vite ? runtime : dev).push('vite@^' + patched);
|
|
394
|
+
notes.push('Includes the current Vite fixes within your existing major version. Your Vite configuration is preserved.');
|
|
395
|
+
}
|
|
396
|
+
const commands = [installCommand(client.root, managerName, runtime)];
|
|
397
|
+
if (dev.length) {
|
|
398
|
+
const command = installCommand(client.root, managerName, dev);
|
|
399
|
+
command.args.splice(2, 0, '-D');
|
|
400
|
+
commands.push(command);
|
|
401
|
+
}
|
|
402
|
+
if (mode === 'new')
|
|
403
|
+
for (const file of files) {
|
|
404
|
+
await safePath(file.path);
|
|
405
|
+
if (await exists(file.path))
|
|
406
|
+
throw Error(`Already exists: ${file.path}. Nothing was changed. Use --upgrade or --resume for an existing installation.`);
|
|
407
|
+
}
|
|
408
|
+
if (mode !== 'resume')
|
|
409
|
+
recordGeneratedFiles(files, client.root, client.root);
|
|
410
|
+
return { platform: 'web', auth, files: mode === 'resume' ? [] : files, replacements: [], commands, notes, setupFile: join(client.root, '.robono/setup.json') };
|
|
411
|
+
}
|
|
243
412
|
//# sourceMappingURL=messenger-install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-install.js","sourceRoot":"","sources":["../src/messenger-install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messenger-install.js","sourceRoot":"","sources":["../src/messenger-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type IncomingMessage, type ServerResponse } from 'node:http';
|
|
2
|
+
import type { RobonoMessengerServer } from './messenger.js';
|
|
3
|
+
/** Node/Express-compatible handler. Mount before body parsers; private keys stay in getMessenger. */
|
|
4
|
+
export declare function createMessengerNodeHandler(options: {
|
|
5
|
+
getMessenger: () => RobonoMessengerServer;
|
|
6
|
+
origin: string;
|
|
7
|
+
}): (req: IncomingMessage, res: ServerResponse) => Promise<boolean>;
|
|
8
|
+
/** Serve only a built Vite frontend, never the application/source directory. */
|
|
9
|
+
export declare function createMessengerWebsiteServer(options: {
|
|
10
|
+
getMessenger: () => RobonoMessengerServer;
|
|
11
|
+
origin: string;
|
|
12
|
+
staticDirectory: string;
|
|
13
|
+
}): Promise<import("http").Server<typeof IncomingMessage, typeof ServerResponse>>;
|
|
14
|
+
//# sourceMappingURL=messenger-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-node.d.ts","sourceRoot":"","sources":["../src/messenger-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,eAAe,EAAC,KAAK,cAAc,EAAC,MAAM,WAAW,CAAC;AAGhF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAO1D,qGAAqG;AACrG,wBAAgB,0BAA0B,CAAC,OAAO,EAAC;IAAC,YAAY,EAAC,MAAI,qBAAqB,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC,IAG1F,KAAI,eAAe,EAAC,KAAI,cAAc,KAAE,OAAO,CAAC,OAAO,CAAC,CA6BtE;AAGD,gFAAgF;AAChF,wBAAsB,4BAA4B,CAAC,OAAO,EAAC;IAAC,YAAY,EAAC,MAAI,qBAAqB,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,eAAe,EAAC,MAAM,CAAA;CAAC,iFAyBvI"}
|