@robono/server 0.23.0 → 0.23.1
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 +6 -0
- package/SBOM.spdx.json +9 -9
- package/dist/messaging-extras-contract.d.ts.map +1 -1
- package/dist/messaging-extras-contract.js +5 -2
- package/dist/messaging-extras-contract.js.map +1 -1
- package/dist/messenger-install.d.ts +1 -1
- package/dist/messenger-install.js +4 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.23.1 — 2026-11-04
|
|
4
|
+
|
|
5
|
+
- Preserve the required 15-minute timer when forwarding chat tracking starts through the customer server.
|
|
6
|
+
|
|
1
7
|
## 0.23.0 — unreleased
|
|
2
8
|
|
|
3
9
|
Connect messaging, Maps, chat extras and supplied calling through one authenticated route. Synchronize contacts once; retain caller controls on the server. Add managed call alerts, read-only setup checks, Maps/native registration guidance and screen-sharing build configuration. Preserve customer permissions and explicit plugin choices during upgrades.
|
package/SBOM.spdx.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"spdxVersion": "SPDX-2.3",
|
|
3
3
|
"dataLicense": "CC0-1.0",
|
|
4
4
|
"SPDXID": "SPDXRef-DOCUMENT",
|
|
5
|
-
"name": "@robono/server@0.23.
|
|
6
|
-
"documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.23.
|
|
5
|
+
"name": "@robono/server@0.23.1",
|
|
6
|
+
"documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.23.1-***",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-11-
|
|
8
|
+
"created": "2026-11-04T12:10:55.581Z",
|
|
9
9
|
"creators": [
|
|
10
10
|
"Tool: npm/cli-11.6.2"
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
13
|
"documentDescribes": [
|
|
14
|
-
"SPDXRef-Package-robono.server-0.23.
|
|
14
|
+
"SPDXRef-Package-robono.server-0.23.1"
|
|
15
15
|
],
|
|
16
16
|
"packages": [
|
|
17
17
|
{
|
|
18
18
|
"name": "@robono/server",
|
|
19
|
-
"SPDXID": "SPDXRef-Package-robono.server-0.23.
|
|
20
|
-
"versionInfo": "0.23.
|
|
19
|
+
"SPDXID": "SPDXRef-Package-robono.server-0.23.1",
|
|
20
|
+
"versionInfo": "0.23.1",
|
|
21
21
|
"packageFileName": "",
|
|
22
22
|
"description": "Provider-neutral server SDK for the Robono Bridge API.",
|
|
23
23
|
"primaryPackagePurpose": "LIBRARY",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{
|
|
30
30
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
31
31
|
"referenceType": "purl",
|
|
32
|
-
"referenceLocator": "pkg:npm/%40robono/server@0.23.
|
|
32
|
+
"referenceLocator": "pkg:npm/%40robono/server@0.23.1"
|
|
33
33
|
}
|
|
34
34
|
]
|
|
35
35
|
},
|
|
@@ -175,12 +175,12 @@
|
|
|
175
175
|
"relationships": [
|
|
176
176
|
{
|
|
177
177
|
"spdxElementId": "SPDXRef-DOCUMENT",
|
|
178
|
-
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.
|
|
178
|
+
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.1",
|
|
179
179
|
"relationshipType": "DESCRIBES"
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"spdxElementId": "SPDXRef-Package-cross-spawn-7.0.6",
|
|
183
|
-
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.
|
|
183
|
+
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.1",
|
|
184
184
|
"relationshipType": "DEPENDENCY_OF"
|
|
185
185
|
},
|
|
186
186
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-extras-contract.d.ts","sourceRoot":"","sources":["../src/messaging-extras-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,8JAAqJ,CAAC;AAC5L,MAAM,MAAM,wBAAwB,GAAC,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAG9E,4FAA4F;AAC5F,wBAAgB,8BAA8B,CAAC,KAAK,EAAC,OAAO,EAAC,GAAG,SAAW;;WAOY,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC;;;;;;;
|
|
1
|
+
{"version":3,"file":"messaging-extras-contract.d.ts","sourceRoot":"","sources":["../src/messaging-extras-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,8JAAqJ,CAAC;AAC5L,MAAM,MAAM,wBAAwB,GAAC,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAG9E,4FAA4F;AAC5F,wBAAgB,8BAA8B,CAAC,KAAK,EAAC,OAAO,EAAC,GAAG,SAAW;;WAOY,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC;;;;;;;EAuC5G"}
|
|
@@ -74,8 +74,11 @@ export function validateMessagingExtrasRequest(value, now = Date.now()) {
|
|
|
74
74
|
throw Error('A request ID is required.');
|
|
75
75
|
input.requestId = v.requestId;
|
|
76
76
|
}
|
|
77
|
-
if (operation === 'tracking-start'
|
|
78
|
-
|
|
77
|
+
if (operation === 'tracking-start') {
|
|
78
|
+
if (v.durationMinutes !== 15)
|
|
79
|
+
throw Error('Chat tracking lasts 15 minutes.');
|
|
80
|
+
input.durationMinutes = 15;
|
|
81
|
+
}
|
|
79
82
|
if (operation === 'tracking-stop' && v.sessionId === undefined) {
|
|
80
83
|
if (!identifier(v.requestId))
|
|
81
84
|
throw Error('Choose a sharing request.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-extras-contract.js","sourceRoot":"","sources":["../src/messaging-extras-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAC,CAAC,aAAa,EAAC,cAAc,EAAC,aAAa,EAAC,iBAAiB,EAAC,gBAAgB,EAAC,iBAAiB,EAAC,eAAe,EAAC,YAAY,EAAC,YAAY,CAAU,CAAC;AAE5L,MAAM,UAAU,GAAC,CAAC,KAAa,EAAC,GAAG,GAAC,GAAG,EAAiB,EAAE,CAAA,OAAO,KAAK,KAAG,QAAQ,IAAE,KAAK,CAAC,MAAM,GAAC,CAAC,IAAE,KAAK,CAAC,MAAM,IAAE,GAAG,IAAE,KAAK,CAAC,IAAI,EAAE,KAAG,KAAK,IAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjL,MAAM,IAAI,GAAC,CAAC,KAAa,EAAiB,EAAE,CAAA,OAAO,KAAK,KAAG,QAAQ,IAAE,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnJ,4FAA4F;AAC5F,MAAM,UAAU,8BAA8B,CAAC,KAAa,EAAC,GAAG,GAAC,IAAI,CAAC,GAAG,EAAE;IAC1E,IAAG,CAAC,KAAK,IAAE,OAAO,KAAK,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAC,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjG,MAAM,CAAC,GAAC,KAA+B,EAAC,SAAS,GAAC,CAAC,CAAC,SAAqC,CAAC;IAC1F,IAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAC,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAG,SAAS,KAAG,YAAY,EAAC,CAAC;QAC5B,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,OAAO,CAAC,CAAC,MAAM,KAAG,SAAS;YAAC,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC/G,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,EAAC,SAAS,EAAC,CAAC,CAAC,SAAS,EAAC,OAAO,EAAC,CAAC,CAAC,OAAO,EAAC,MAAM,EAAC,CAAC,CAAC,MAAM,EAA2B,EAAC,CAAC;IAC9G,CAAC;IACD,IAAG,SAAS,KAAG,YAAY,EAAC,CAAC;QAC5B,IAAG,CAAC,CAAC,KAAK,EAAC,KAAK,EAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC/F,KAAK,CAAC,QAAQ,GAAC,CAAC,CAAC,QAAQ,CAAC;QAC1B,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAAC,MAAM,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACnF,KAAK,CAAC,UAAU,GAAC,CAAC,CAAC,UAAU,CAAC;QAC9B,IAAG,CAAC,CAAC,QAAQ,KAAG,KAAK,EAAC,CAAC;YAAA,MAAM,GAAG,GAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAAA,IAAG,GAAG,CAAC,MAAM,KAAG,CAAC,CAAC,UAAU,IAAE,GAAG,CAAC,QAAQ,KAAG,QAAQ,IAAE,GAAG,CAAC,QAAQ,IAAE,GAAG,CAAC,QAAQ;gBAAC,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAAA,CAAC;QACnM,IAAG,CAAC,CAAC,QAAQ,KAAG,SAAS,EAAC,CAAC;YAAA,IAAG,OAAO,CAAC,CAAC,WAAW,KAAG,QAAQ,IAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,EAAC,EAAE,CAAC,CAAC;gBAAC,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAAA,KAAK,CAAC,WAAW,GAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,EAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAAA,CAAC;QACrP,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAAC,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,CAAC,CAAC,SAAS,CAAC;QACjG,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,CAAC;IAC1B,CAAC;IACD,IAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;QAAC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAAA,KAAK,CAAC,cAAc,GAAC,CAAC,CAAC,cAAc,CAAC;IACvG,IAAG,SAAS,KAAG,aAAa,EAAC,CAAC;QAC7B,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,CAAC,UAAU,CAAC,MAAM,GAAC,GAAG,IAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA,EAAE,CAAA,UAAU,CAAC,EAAE,EAAC,EAAE,CAAC,IAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACzK,KAAK,CAAC,UAAU,GAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAG,SAAS,KAAG,iBAAiB,IAAE,CAAC,CAAC,WAAW,KAAG,SAAS,EAAC,CAAC;QAAA,IAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAC,CAAC,IAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAC,CAAC;YAAC,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAAA,KAAK,CAAC,WAAW,GAAC,CAAC,CAAC,WAAW,CAAC;IAAA,CAAC;IACzN,IAAG,SAAS,KAAG,aAAa,EAAC,CAAC;QAAA,IAAG,OAAO,CAAC,CAAC,OAAO,KAAG,SAAS;YAAC,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAAA,KAAK,CAAC,OAAO,GAAC,CAAC,CAAC,OAAO,CAAC;IAAA,CAAC;IACrI,IAAG,CAAC,iBAAiB,EAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC,CAAC;QAC5D,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAC,EAAE,CAAC,IAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAAC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,CAAC,CAAC,SAAS,CAAC;IAC1I,CAAC;IACD,IAAG,SAAS,KAAG,iBAAiB,IAAE,SAAS,KAAG,eAAe,IAAE,CAAC,CAAC,SAAS,KAAG,SAAS,EAAC,CAAC;QAAA,IAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAAC,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CAAC;IACpL,IAAG,SAAS,KAAG,eAAe,IAAE,CAAC,CAAC,SAAS,KAAG,SAAS,EAAC,CAAC;QAAA,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAAC,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CAAC;IAC3J,IAAG,CAAC,cAAc,EAAC,iBAAiB,EAAC,gBAAgB,EAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAC,CAAC;QAC7F,IAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAAC,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAAA,KAAK,CAAC,SAAS,GAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IACD,IAAG,SAAS,KAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"messaging-extras-contract.js","sourceRoot":"","sources":["../src/messaging-extras-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export interface MessengerInstallPlan {
|
|
|
25
25
|
notes: string[];
|
|
26
26
|
setupFile?: string;
|
|
27
27
|
}
|
|
28
|
-
export declare const messengerInstallerVersion = "0.23.
|
|
28
|
+
export declare const messengerInstallerVersion = "0.23.1";
|
|
29
29
|
export declare const generatedHash: (content: string) => string;
|
|
30
30
|
export declare function generatedKey(file: string, client: string, server: string): string;
|
|
31
31
|
export declare function exists(file: string): Promise<boolean>;
|
|
@@ -5,7 +5,7 @@ import { readFile, writeFile, mkdir, lstat, realpath, unlink, rename } from 'nod
|
|
|
5
5
|
import { resolve, join, dirname, relative, isAbsolute } from 'node:path';
|
|
6
6
|
import spawn from 'cross-spawn';
|
|
7
7
|
import { messengerStarterFiles } from './messenger-init.js';
|
|
8
|
-
export const messengerInstallerVersion = '0.23.
|
|
8
|
+
export const messengerInstallerVersion = '0.23.1';
|
|
9
9
|
export const generatedHash = (content) => createHash('sha256').update(content).digest('hex');
|
|
10
10
|
export function generatedKey(file, client, server) {
|
|
11
11
|
const local = relative(server, file);
|
|
@@ -143,11 +143,11 @@ export async function buildMessengerInstallation(options, mode) {
|
|
|
143
143
|
'Keep provider credentials and the Robono key on the server. The installer never reads or edits your .env files.',
|
|
144
144
|
'Mount CustomerMessenger with your existing sign-in client and contacts. Account wiring is included.',
|
|
145
145
|
'Connect website alerts or Apple/Google credentials in Robono → Your app → Message notifications. Chat works before alerts are configured.'];
|
|
146
|
-
const setup = { schema: 3, installerVersion: '0.23.
|
|
146
|
+
const setup = { schema: 3, installerVersion: '0.23.1', 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' } };
|
|
147
147
|
files.push({ path: join(client.root, '.robono/setup.json'), content: JSON.stringify(setup, null, 2) + '\n' });
|
|
148
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## Maps, weather and tracking\nThe supplied Messenger connects these through the same signed-in backend. Choose Maps placement in Robono: inside messaging, a separate Maps page, or both. Standalone Maps appears in the main menu when selected. Permissions for sharing still come from your server; never create grants in phone or browser code.\n\nFor web map display, register the exact HTTPS origin in Robono Maps. For phones, register the iPhone Bundle ID and Android package plus signing fingerprint. Download each registration to .robono/maps-ios.json and .robono/maps-android.json in the phone project, run --upgrade, and rebuild both apps. Keep these platform-restricted map keys out of public examples. Provider billing and private provider keys remain managed by Robono. Your users choose when to share location; background sharing asks for the phone permission. Browser sharing ends when the page is hidden. Movement is independent of location: iPhone movement requires the app open, Android supports its visible service, and browser movement requires a supported device and visible page. Ordinary messaging and weather do not require map registration.\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' });
|
|
149
149
|
files.push({ path: join(server.root, '.robono/server.env.example'), content: templates['.env.example'] });
|
|
150
|
-
const serverPackages = ['@robono/server@^0.23.
|
|
150
|
+
const serverPackages = ['@robono/server@^0.23.1', ...(platform === 'expo' ? ['@robono/location@^0.2.0', '@robono/messaging@^0.5.0', '@robono/messaging-web@^0.7.0'] : []), ...(auth === 'supabase' ? ['@supabase/supabase-js@^2'] : auth === 'firebase' ? ['firebase-admin@^14'] : [])];
|
|
151
151
|
const clientPackages = ['@robono/location@^0.2.0', ...(platform === 'expo' ? ['@robono/location-react-native@^0.2.0', '@robono/calling@^0.4.0', '@robono/calling-react-native@^0.5.0', 'react-native-webrtc@^124.0.8', 'react-native-incall-manager@^4.3.0'] : []), '@robono/messaging@^0.5.0', `@robono/messaging-${platform === 'web' ? 'web' : 'react-native'}@^0.7.0`, ...(auth === 'supabase' ? ['@supabase/supabase-js@^2'] : auth === 'firebase' ? ['firebase@^13'] : [])];
|
|
152
152
|
const packageName = (spec) => spec.slice(0, spec.lastIndexOf('@'));
|
|
153
153
|
const keepExistingProvider = (spec, deps) => !['firebase', 'firebase-admin', '@supabase/supabase-js'].includes(packageName(spec)) || !deps[packageName(spec)];
|
|
@@ -416,7 +416,7 @@ async function planViteInstallation(options, client, mode) {
|
|
|
416
416
|
files.push({ path: join(client.root, '.robono/server.env.example'), content: templates['.env.example'] + 'ROBONO_PUBLIC_ORIGIN=' + options.origin + '\n' });
|
|
417
417
|
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' });
|
|
418
418
|
const managerName = await manager(client.root, client.pkg);
|
|
419
|
-
const runtime = ['@robono/location@^0.2.0', '@robono/server@^0.23.
|
|
419
|
+
const runtime = ['@robono/location@^0.2.0', '@robono/server@^0.23.1', '@robono/messaging@^0.5.0', '@robono/messaging-web@^0.7.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'] : [])] : [])];
|
|
420
420
|
const dev = ['tsx@^4.23.15', 'typescript@^6', '@types/node@^22'].filter(spec => !client.deps[spec.slice(0, spec.lastIndexOf('@'))]);
|
|
421
421
|
if (updateVite) {
|
|
422
422
|
(client.pkg.dependencies?.vite ? runtime : dev).push('vite@^' + patched);
|