@robono/server 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/HISTORY-IMPORT.md +110 -0
  3. package/HOSTED.md +241 -0
  4. package/INTEGRATION-ASSISTANT.md +103 -0
  5. package/README.md +27 -3
  6. package/SBOM.spdx.json +9 -9
  7. package/dist/calling-session-handle.d.ts.map +1 -1
  8. package/dist/calling-session-handle.js +1 -0
  9. package/dist/calling-session-handle.js.map +1 -1
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +2 -1
  12. package/dist/client.js.map +1 -1
  13. package/dist/generated/custom-messages.d.ts +31 -0
  14. package/dist/generated/custom-messages.d.ts.map +1 -0
  15. package/dist/generated/custom-messages.js +84 -0
  16. package/dist/generated/custom-messages.js.map +1 -0
  17. package/dist/generated/sdk-versions.d.ts +13 -0
  18. package/dist/generated/sdk-versions.d.ts.map +1 -0
  19. package/dist/generated/sdk-versions.js +4 -0
  20. package/dist/generated/sdk-versions.js.map +1 -0
  21. package/dist/history-export-cli.d.ts +4 -0
  22. package/dist/history-export-cli.d.ts.map +1 -0
  23. package/dist/history-export-cli.js +166 -0
  24. package/dist/history-export-cli.js.map +1 -0
  25. package/dist/history-export-files.d.ts +39 -0
  26. package/dist/history-export-files.d.ts.map +1 -0
  27. package/dist/history-export-files.js +119 -0
  28. package/dist/history-export-files.js.map +1 -0
  29. package/dist/history-export.d.ts +92 -0
  30. package/dist/history-export.d.ts.map +1 -0
  31. package/dist/history-export.js +78 -0
  32. package/dist/history-export.js.map +1 -0
  33. package/dist/history-import-cli.d.ts +11 -0
  34. package/dist/history-import-cli.d.ts.map +1 -0
  35. package/dist/history-import-cli.js +94 -0
  36. package/dist/history-import-cli.js.map +1 -0
  37. package/dist/history-import.d.ts +66 -0
  38. package/dist/history-import.d.ts.map +1 -0
  39. package/dist/history-import.js +69 -0
  40. package/dist/history-import.js.map +1 -0
  41. package/dist/hosted-sessions.d.ts +38 -0
  42. package/dist/hosted-sessions.d.ts.map +1 -0
  43. package/dist/hosted-sessions.js +68 -0
  44. package/dist/hosted-sessions.js.map +1 -0
  45. package/dist/index.d.ts +7 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +3 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/integration-assistant.txt +103 -0
  50. package/dist/managed-media.d.ts +2 -1
  51. package/dist/managed-media.d.ts.map +1 -1
  52. package/dist/managed-media.js +1 -1
  53. package/dist/managed-media.js.map +1 -1
  54. package/dist/messaging-notification-providers.d.ts +2 -3
  55. package/dist/messaging-notification-providers.d.ts.map +1 -1
  56. package/dist/messaging-notification-providers.js +1 -0
  57. package/dist/messaging-notification-providers.js.map +1 -1
  58. package/dist/messaging-push-worker.d.ts.map +1 -1
  59. package/dist/messaging-push-worker.js +3 -2
  60. package/dist/messaging-push-worker.js.map +1 -1
  61. package/dist/messaging.d.ts +5 -0
  62. package/dist/messaging.d.ts.map +1 -1
  63. package/dist/messaging.js +11 -2
  64. package/dist/messaging.js.map +1 -1
  65. package/dist/messenger-check.d.ts +1 -0
  66. package/dist/messenger-check.d.ts.map +1 -1
  67. package/dist/messenger-check.js +7 -5
  68. package/dist/messenger-check.js.map +1 -1
  69. package/dist/messenger-connected-templates.d.ts.map +1 -1
  70. package/dist/messenger-connected-templates.js +9 -6
  71. package/dist/messenger-connected-templates.js.map +1 -1
  72. package/dist/messenger-example-cli.d.ts +3 -0
  73. package/dist/messenger-example-cli.d.ts.map +1 -0
  74. package/dist/messenger-example-cli.js +47 -0
  75. package/dist/messenger-example-cli.js.map +1 -0
  76. package/dist/messenger-example.d.ts +9 -0
  77. package/dist/messenger-example.d.ts.map +1 -0
  78. package/dist/messenger-example.js +42 -0
  79. package/dist/messenger-example.js.map +1 -0
  80. package/dist/messenger-example.json +1 -0
  81. package/dist/messenger-framework-templates.d.ts +3 -0
  82. package/dist/messenger-framework-templates.d.ts.map +1 -0
  83. package/dist/messenger-framework-templates.js +68 -0
  84. package/dist/messenger-framework-templates.js.map +1 -0
  85. package/dist/messenger-hosted-install.d.ts +3 -0
  86. package/dist/messenger-hosted-install.d.ts.map +1 -0
  87. package/dist/messenger-hosted-install.js +109 -0
  88. package/dist/messenger-hosted-install.js.map +1 -0
  89. package/dist/messenger-hosted-templates.d.ts +6 -0
  90. package/dist/messenger-hosted-templates.d.ts.map +1 -0
  91. package/dist/messenger-hosted-templates.js +84 -0
  92. package/dist/messenger-hosted-templates.js.map +1 -0
  93. package/dist/messenger-install-cli.js +10 -7
  94. package/dist/messenger-install-cli.js.map +1 -1
  95. package/dist/messenger-install.d.ts +24 -1
  96. package/dist/messenger-install.d.ts.map +1 -1
  97. package/dist/messenger-install.js +24 -9
  98. package/dist/messenger-install.js.map +1 -1
  99. package/dist/messenger-node.d.ts.map +1 -1
  100. package/dist/messenger-node.js +1 -0
  101. package/dist/messenger-node.js.map +1 -1
  102. package/dist/messenger-preview-template.d.ts.map +1 -1
  103. package/dist/messenger-preview-template.js +1 -0
  104. package/dist/messenger-preview-template.js.map +1 -1
  105. package/dist/messenger-upgrade.js +1 -1
  106. package/dist/messenger-upgrade.js.map +1 -1
  107. package/package.json +10 -4
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.26.0 — release candidate
2
+
3
+ Add complete runnable examples, maintained assistant instructions, business-message validation, public-group management, app availability and resumable history export including optional private attachment files. Keep installer/example package versions coordinated.
4
+
5
+ ## 0.25.0 — release candidate
6
+
7
+ Make Robono-hosted connections the default, add framework installation and sign-in examples, and import historical conversations with validation and retry-safe jobs. Customer-hosted forwarding remains optional.
8
+
1
9
  ## 0.24.0
2
10
 
3
11
  Add explicit Robono-managed membership permissions to the supplied Messenger server and installer. Preserve existing custom authorization during upgrades. Register native incoming-call devices and deliver genuine Apple VoIP / Android data call invitations separately from message notifications.
@@ -0,0 +1,110 @@
1
+ # Bring existing conversations to Robono
2
+
3
+ Use this server-only tool before opening the destination conversation to users.
4
+ It preserves original authors, dates, replies and validated custom message data, and keeps attachment files private.
5
+ It does not send old push notifications, create unread badges, fabricate read
6
+ receipts, or charge old messages as new sends. Storage, transfer and any enabled
7
+ screening still follow your selected plan and spending limits.
8
+
9
+ ## One conversation at a time
10
+
11
+ 1. Create the authorized empty conversation using your existing Robono connection.
12
+ Full history must be selected. For direct chats, authors must be the two members.
13
+ For groups, the import can name former authors without granting them membership.
14
+ 2. Export messages into the JSON format below. Keep the job UUID and original source
15
+ IDs unchanged for retries. Your existing provider's export must be mapped to
16
+ these fields; this command does not request your old provider's credentials.
17
+ 3. Validate locally, then apply from your server:
18
+
19
+ ```sh
20
+ npx --package @robono/server robono-history-import --file history.json
21
+ # Set ROBONO_API_KEY securely in this server's environment, then:
22
+ npx --package @robono/server robono-history-import --file history.json --apply
23
+ ```
24
+
25
+ Use a key with `messaging:manage`. Never put it in a website, phone app, exported
26
+ JSON, screenshot or source control. Validation alone does not contact Robono.
27
+ The command retries temporary connection failures using the same import identity.
28
+ A policy failure stays visible. Correct the cause and rerun the same command.
29
+
30
+ ```json
31
+ {
32
+ "jobId": "66a3ee0d-18bb-49dc-bb06-a7adab745ef4",
33
+ "conversationId": "c829bd4f-1f67-4cd1-b285-6502923885b5",
34
+ "authors": ["alice", "bob"],
35
+ "messages": [
36
+ {"sourceId":"old-1","authorId":"alice","sentAt":"2026-01-01T12:00:00Z",
37
+ "content":{"kind":"text","text":"Meet at noon?"}},
38
+ {"sourceId":"old-2","authorId":"bob","sentAt":"2026-01-01T12:01:00Z",
39
+ "replyToSourceId":"old-1","content":{"kind":"text","text":"Yes."}}
40
+ ]
41
+ }
42
+ ```
43
+
44
+ Messages become visible together when the whole conversation passes validation.
45
+ Ordinary sends wait while the import is active. A retry after a lost final response
46
+ returns the existing result; it does not create another copy. Replies must point
47
+ to earlier messages in the same import. Original timestamps order the history;
48
+ file order resolves ties. Current permission, blocked-word/link, attachment and
49
+ screening rules apply again at the final commit.
50
+
51
+ ## Private attachments
52
+
53
+ Text, photos, videos, voice messages and documents are supported. Public URLs and
54
+ another customer's asset IDs are not accepted. Use `RobonoHistoryImport` on your
55
+ server to start the job, upload each original file privately, and use the returned
56
+ `media` object in the message. The importer never sends your API key to file storage.
57
+
58
+ ```ts
59
+ import {randomUUID} from 'node:crypto';
60
+ import {readFile} from 'node:fs/promises';
61
+ import {RobonoHistoryImport} from '@robono/server';
62
+ const importer = new RobonoHistoryImport({apiKey: process.env.ROBONO_API_KEY!});
63
+ // Persist these IDs and the export before starting; reuse them after interruption.
64
+ const jobId = savedJobId;
65
+ await importer.start({jobId, conversationId, authors: ['alice', 'bob'], count: 1});
66
+ const bytes = await readFile('./private-export/photo.jpg');
67
+ const media = await importer.upload({
68
+ jobId, conversationId, authorId: 'alice', uploadId: 'old-photo-1', kind: 'image',
69
+ file: {fileName: 'photo.jpg', mimeType: 'image/jpeg', byteSize: bytes.byteLength}, bytes,
70
+ });
71
+ await importer.importMessages({jobId, conversationId, authors: ['alice', 'bob'],
72
+ messages: [{sourceId: 'old-photo-1', authorId: 'alice', sentAt: originalTimestamp,
73
+ content: {kind: 'image', media}}],
74
+ });
75
+ ```
76
+
77
+ For video/voice, provide the original `durationMs`. Normal file verification and
78
+ screening can keep an upload pending; reuse the same upload ID when retrying.
79
+ Changing the file under the same ID is rejected. Imported file retention starts
80
+ when the imported message is committed and uses your selected storage retention.
81
+
82
+ ## Limits and recovery
83
+
84
+ - Up to 10,000 messages and 32 MiB of staged message content per conversation;
85
+ three active imports per customer. Each HTTP append accepts up to 100 messages;
86
+ the SDK uses smaller batches. Existing nonempty conversations cannot be merged.
87
+ - A job expires after 24 hours. Call `status(jobId)` to check it or `cancel(jobId)`
88
+ to stop an unfinished import. An expired/cancelled job requires a new job UUID.
89
+ - `cancel` removes staging copies, not already committed conversations. Unused
90
+ uploads follow ordinary cleanup. Completed staging copies are removed within
91
+ seven days; the content-free job result remains for safe retries.
92
+ - User erasure cancels affected unfinished imports and removes their staging
93
+ copies, so an old import cannot restore erased content.
94
+ - Poll votes, reactions and delivered/read status are not imported by this format.
95
+ Keep the original export if needed. Custom message data is supported after mapping
96
+ it to Robono's versioned `custom` structure with a readable text fallback.
97
+ All data and action labels pass the same size limits and screening as new messages.
98
+
99
+ This is an import into Robono-managed messaging, not a live cross-provider bridge.
100
+
101
+ ## Custom cards and customer data
102
+
103
+ A text record may include `custom: {type, version, data}`. The original type, version
104
+ and JSON data are preserved; supplied `robono.card` messages must match the card
105
+ schema. A nonempty `text` fallback is required for search, notifications and clients
106
+ without your renderer. Unknown custom fields outside this structure are rejected,
107
+ not silently discarded. Current word/link and AI screening cover all strings in
108
+ the custom data, including action labels. See the [business message guide](https://robono.com/guides/business-messages.html).
109
+
110
+ For exporting existing Robono data, see the [export guide](https://robono.com/guides/history-export.html).
package/HOSTED.md ADDED
@@ -0,0 +1,241 @@
1
+ # Robono-hosted Messenger
2
+
3
+ Robono runs messaging, calling, private attachment storage and location services.
4
+ Your existing server verifies your existing users. It issues a short-lived Robono
5
+ session and tells Robono who is allowed to communicate. Chat traffic does not
6
+ pass through your server. Users do not create a second account.
7
+
8
+ ## 1. Install the interface
9
+
10
+ From the website or Expo project:
11
+
12
+ ```sh
13
+ npx --package @robono/server@^0.25.0 robono-messenger-install --project . --origin https://your-company.com --company 'Your company'
14
+ ```
15
+
16
+ Review the files, then accept installation. The default is Robono hosting.
17
+ Next.js receives a small sign-in route. React/Vite, Vue, Svelte, Angular and Expo
18
+ connect to your existing sign-in server; they do not need a Node messaging server.
19
+ Use `--token-endpoint https://your-server.com/api/robono-token` if that route is on
20
+ another server. That server must explicitly allow your website origin for this
21
+ bearer-authenticated request; never use a wildcard with credentials.
22
+
23
+ For Expo, rebuild both phone apps after installing the native dependencies. A
24
+ static app.json gets the grouped plugin automatically. For a config written in
25
+ JavaScript/TypeScript, add `@robono/messaging-react-native/setup` to `plugins`.
26
+ The installer preserves existing screens, configuration code and environment files.
27
+
28
+ The generated `.robono/SETUP.md` explains exactly which component to import.
29
+ React/Expo use `CustomerMessenger` with your existing Supabase/Firebase instance
30
+ or the small generated account interface. Other website frameworks receive a
31
+ thin component around the same supplied Messenger. Give the component a height
32
+ and keep it mounted while signed in. Supply names, avatars and phone numbers
33
+ from your own contact directory; Robono does not invent your employee/customer
34
+ records or make every user visible to every other user.
35
+
36
+ ## 2. Verify the existing login
37
+
38
+ Keep `ROBONO_API_KEY` on your existing server. Never put it in a phone app,
39
+ JavaScript served to the browser, a URL, or a public environment variable.
40
+
41
+ The client sends its existing bearer login to your `/api/robono-token` route.
42
+ The route verifies that login using your existing authentication provider. Use
43
+ the verified account ID, never a user ID supplied in the request body.
44
+
45
+ ### JavaScript / TypeScript
46
+
47
+ ```ts
48
+ import {createRobonoTokenHandler} from '@robono/server';
49
+ import {verifyExistingLogin} from './your-existing-login';
50
+
51
+ export const POST = createRobonoTokenHandler({
52
+ apiKey: process.env.ROBONO_API_KEY!,
53
+ origins: ['https://your-company.com'],
54
+ authenticate: async request => {
55
+ const account = await verifyExistingLogin(request);
56
+ return account?.id ?? null;
57
+ },
58
+ });
59
+ export const OPTIONS = POST;
60
+ ```
61
+
62
+ Supabase and Firebase verification are generated when selected in the installer.
63
+ For another login system, `verifyExistingLogin` is the one customer-owned
64
+ connection. It must check expiry, revocation and disabled accounts. Decoding a
65
+ JWT without verifying its signature is not authentication.
66
+
67
+ ### Any other server language
68
+
69
+ The same route can make one ordinary HTTPS request. No Node service is required:
70
+
71
+ ```http
72
+ POST https://api.robono.com/v1/messenger/sessions
73
+ Authorization: Bearer YOUR_PRIVATE_ROBONO_KEY
74
+ Content-Type: application/json
75
+
76
+ {"operation":"create","userId":"VERIFIED_ACCOUNT_ID","origins":["https://your-company.com"],"expiresInSeconds":900}
77
+ ```
78
+
79
+ Return the response only to that signed-in user with `Cache-Control: no-store`.
80
+ Reject unknown browser origins. Native clients may omit Origin but must still
81
+ present their existing login. Do not log the returned token. Requests use HTTPS,
82
+ a timeout and no redirects. Set CORS on a separate sign-in domain to your exact
83
+ website origin and allow `Authorization` and `Content-Type`; no cookies are
84
+ needed by the supplied bearer-token connection.
85
+
86
+ This Python helper is called **after your framework has authenticated the user**:
87
+
88
+ ```python
89
+ import json, os, urllib.request
90
+
91
+ class NoRedirect(urllib.request.HTTPRedirectHandler):
92
+ def redirect_request(self, request, fp, code, message, headers, new_url):
93
+ return None
94
+
95
+ def issue_robono_session(verified_user_id):
96
+ request = urllib.request.Request(
97
+ 'https://api.robono.com/v1/messenger/sessions',
98
+ data=json.dumps({'operation': 'create', 'userId': verified_user_id,
99
+ 'origins': ['https://your-company.com']}).encode(),
100
+ headers={'Authorization': 'Bearer ' + os.environ['ROBONO_API_KEY'],
101
+ 'Content-Type': 'application/json'}, method='POST')
102
+ with urllib.request.build_opener(NoRedirect()).open(request, timeout=15) as response:
103
+ return json.load(response)
104
+ ```
105
+
106
+ PHP, inside an already authenticated controller:
107
+
108
+ ```php
109
+ function issueRobonoSession(string $verifiedUserId): array {
110
+ $request = curl_init('https://api.robono.com/v1/messenger/sessions');
111
+ curl_setopt_array($request, [
112
+ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
113
+ CURLOPT_FOLLOWLOCATION => false, CURLOPT_TIMEOUT => 15,
114
+ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('ROBONO_API_KEY'),
115
+ 'Content-Type: application/json'],
116
+ CURLOPT_POSTFIELDS => json_encode(['operation' => 'create',
117
+ 'userId' => $verifiedUserId, 'origins' => ['https://your-company.com']], JSON_THROW_ON_ERROR),
118
+ ]);
119
+ $body = curl_exec($request);
120
+ $status = curl_getinfo($request, CURLINFO_RESPONSE_CODE);
121
+ curl_close($request);
122
+ if ($body === false || $status !== 201) throw new RuntimeException('Messaging sign-in unavailable');
123
+ return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
124
+ }
125
+ ```
126
+
127
+ .NET, inside an endpoint protected by your existing authentication middleware:
128
+
129
+ ```csharp
130
+ using System.Net.Http.Headers;
131
+ using System.Net.Http.Json;
132
+ using System.Text.Json;
133
+
134
+ static async Task<JsonElement> IssueRobonoSession(string verifiedUserId, string key) {
135
+ using var client = new HttpClient(new HttpClientHandler { AllowAutoRedirect = false }) {
136
+ Timeout = TimeSpan.FromSeconds(15)
137
+ };
138
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", key);
139
+ using var response = await client.PostAsJsonAsync(
140
+ "https://api.robono.com/v1/messenger/sessions",
141
+ new { operation = "create", userId = verifiedUserId,
142
+ origins = new[] { "https://your-company.com" } });
143
+ response.EnsureSuccessStatusCode();
144
+ return await response.Content.ReadFromJsonAsync<JsonElement>();
145
+ }
146
+ ```
147
+
148
+ The examples deliberately receive `verifiedUserId`; it must come from your
149
+ framework's authenticated account, never form data or an unsigned header.
150
+ Handle provider errors with a generic failure response, not a private token or
151
+ provider response dump. Your regular login rate limit also applies to this route.
152
+
153
+ ## 3. Synchronize your permissions
154
+
155
+ For contacts, call the server-only `RobonoMessengerConnections.synchronizeContact`
156
+ with the two authoritative user IDs, `allowed` and a monotonically increasing
157
+ revision. It updates texting and calling together. Group membership uses
158
+ `RobonoMessagingBackend.setGroup`. Location visibility uses
159
+ `RobonoLocationBackend.setGrant` and the recipient's sharing approval. Send
160
+ changes when your own records change; users cannot grant themselves membership.
161
+ An empty contact list is valid and means you have not connected anyone yet.
162
+
163
+ For suspension/deletion, synchronize the account's service permissions and call
164
+ `RobonoSessions.revokeUser(userId)` with the same server key that minted sessions.
165
+ Key revocation also invalidates sessions minted by that key. Sessions never
166
+ extend the original key's scope. A session lasts 15 minutes by default and may
167
+ be configured from one minute to one hour. The supplied client renews it through
168
+ your verified login; it never stores the token on disk.
169
+
170
+ ## Notifications, Maps and calling
171
+
172
+ - Website: publish the included `public/robono-notifications/worker.js`. Enter
173
+ your website origin and chat-page path in Robono's notification setup. The
174
+ worker has its own scope and does not replace your existing website worker.
175
+ A user must allow notifications. iPhone websites must be installed on the
176
+ Home Screen and opened there to receive web notifications.
177
+ - iPhone: connect your Apple Developer Team ID, APNs Key ID, private `.p8` key
178
+ and Bundle ID privately in Robono. Enable push notifications, including the
179
+ incoming-call `.voip` topic. Use development credentials/environment for a
180
+ development build and production for TestFlight/App Store. Do not put the
181
+ `.p8` file in the app.
182
+ - Android: connect the Firebase project, app `google-services.json`, and private
183
+ FCM service account in the documented setup. Only app configuration goes in
184
+ the app; the service account stays at Robono. Full-screen call alerts depend
185
+ on Android permissions and Play eligibility; ordinary Answer/Decline alerts
186
+ are the fallback.
187
+ - Maps: register the website origin or both phone app identifiers in Robono's
188
+ Maps setup. Supply your own authoritative people and sharing grants. The
189
+ supplied interface manages location permission, sharing start/stop and expiry.
190
+ - Video: camera and microphone permissions are required. Apple screen sharing
191
+ additionally needs the Broadcast Upload extension configured by the calling
192
+ plugin; it cannot be added to an already-built app without rebuilding it.
193
+
194
+ These platform credentials belong to the customer's apps and cannot be replaced
195
+ with Robono Messenger's credentials. AWS screening and Robono service credentials
196
+ are managed by Robono; customers do not need their own AWS account.
197
+
198
+ ## Offline behavior and sign-out
199
+
200
+ With the supplied persistent storage, interrupted outgoing messages remain on
201
+ that device and retry for up to 24 hours while the app/site is running. This is
202
+ not a promise that a force-closed app runs in the background. On reconnection,
203
+ Robono checks current permissions before sending. An attachment keeps its place
204
+ in the queue; later text does not overtake it. Stable IDs prevent a lost server
205
+ acknowledgement from creating a second message. Policy failures and expired
206
+ queue items require user action. Users can remove waiting messages.
207
+
208
+ Offline reading/composition requires a still-valid server-issued offline-history
209
+ window. If that window expires, reconnect before displaying private history.
210
+ Sign-out clears the local account state, stops sharing, unregisters notifications
211
+ and revokes the connection's Robono sessions. Notify Robono when your own account
212
+ is suspended; a cached screen is never a new authorization grant.
213
+
214
+ ## Existing installations
215
+
216
+ `--upgrade` preserves customer-edited files and saves proposed changes for review.
217
+ Existing self-hosted installations retain their mode. Moving an existing app to
218
+ hosted mode is a deliberate migration: use the hosted connection and token route,
219
+ verify your existing permission synchronization, then retire the old forwarding
220
+ route. Never leave a private API key in the client as a shortcut. `--self-hosted`
221
+ remains available for customers deliberately maintaining their own adapter.
222
+
223
+
224
+ ## Interface language and recovery
225
+
226
+ Set `interfaceLocale={{locale:'es'}}` on the supplied phone Messenger, or
227
+ `interfaceLocale:{locale:'es'}` when mounting the website Messenger. English is the
228
+ default. This also covers the supplied calling controls and Maps screens. It does
229
+ not change the language of anyone's messages or their translation preferences.
230
+ For custom wording or another language, see the interface language guide.
231
+
232
+ The supplied interface keeps unsent messages and waiting edits/reactions/deletions
233
+ on the device, scoped to the account and customer. It retries connection failures
234
+ in order, after checking current access. Policy failures stay visible for review;
235
+ users can retry or discard them. Automatic retries expire after 24 hours. Sign-out
236
+ clears this account's saved work. Offline storage is device-local, not a server
237
+ backup. A custom outbox can implement the optional action methods to use this flow.
238
+
239
+ To migrate an existing conversation, use `robono-history-import`; see
240
+ [History import](./HISTORY-IMPORT.md). Do this before allowing new sends in that
241
+ conversation. Existing user and membership records remain your responsibility.
@@ -0,0 +1,103 @@
1
+ # Robono integration instructions for coding assistants
2
+
3
+ These instructions describe the supported customer integration. Use the same
4
+ setup with or without an AI assistant. An assistant is optional and never needs
5
+ the customer's Robono private key pasted into a chat.
6
+
7
+ ## Choose the supplied path
8
+
9
+ 1. Read the application's package.json and existing sign-in, routing and layout.
10
+ Keep its framework and login. Do not add a second authentication system.
11
+ 2. Read https://robono.com/guides/hosted-messenger.html and inspect the installed
12
+ package versions. Use their published types; do not guess SDK methods.
13
+ 3. In the application directory, review the generated plan:
14
+
15
+ ```sh
16
+ npx --package @robono/server robono-messenger-install --project . --origin https://your-company.com --company 'Your company' --dry-run
17
+ ```
18
+
19
+ 4. Apply that same command without `--dry-run` after reviewing its files. Use
20
+ `--yes` only when authorized to apply that plan. The default uses Robono hosting.
21
+ Do not create a separate messaging server, forwarding service or hosting bill.
22
+ 5. Follow `.robono/SETUP.md`. Import the generated `CustomerMessenger` in React or
23
+ Expo. In Vue, Svelte, Angular or plain JavaScript, use the generated framework
24
+ wrapper. Give the web container a height and retain the customer's navigation.
25
+ 6. Connect the existing verified login and authorized contact directory. The
26
+ application owns employee/customer records, names, avatars and permissions.
27
+ Do not make all users visible to each other to produce a working demonstration.
28
+
29
+ For a separate local demonstration, `robono-messenger-example --start` creates a
30
+ complete fictional preview. `--live` creates a localhost test-account example.
31
+ Neither demonstration login is a production authentication solution.
32
+
33
+ ## Authentication and permissions
34
+
35
+ - Keep `ROBONO_API_KEY` exclusively on the existing trusted server. Never put it
36
+ in frontend environment variables, the mobile bundle, URLs, logs or screenshots.
37
+ - The small token route verifies the existing login before issuing a short-lived
38
+ Robono session. Derive identity from verified credentials, never request-body IDs.
39
+ Supabase/Firebase verification is generated when selected; custom login requires
40
+ the application's own signature, expiry, revocation and disabled-user checks.
41
+ - Keep exact browser origin restrictions. A different token-server origin needs
42
+ explicit CORS permission for the application's origin and bearer-token header.
43
+ - Synchronize conversation/contact permissions and location grants from the
44
+ customer's trusted server. Client-side controls do not grant access. Apply
45
+ suspensions, deletion and revoked access through the documented server methods.
46
+ - Create one connection per signed-in account. Preserve the supplied lifecycle.
47
+ Stop sharing, unregister notifications and sign out Messenger before ending the
48
+ application's login. Do not reuse one user's connection for another user.
49
+
50
+ ## Features and customization
51
+
52
+ Choose services and their appearance in **Features & preview**. Read saved feature
53
+ availability; do not override disabled paid services in the browser. Use documented
54
+ appearance options and component replacements instead of forking the whole UI.
55
+ Retain supplied send, attachments, previews, statuses and permission handling when
56
+ replacing one visual part. The desktop Messenger responds to its container width.
57
+
58
+ Maps may appear separately, inside Messenger, or both. Register the website origin
59
+ or each native app identifier in Robono Maps setup. Robono provides restricted map
60
+ access; customers do not need a separate map-provider account. Viewing eligibility
61
+ does not start location capture: the supplied Share/Stop controls govern it.
62
+
63
+ ## Native apps and notifications
64
+
65
+ For iPhone/Android, use the supported Expo version shown by the installer. Do not
66
+ silently upgrade the customer's framework. Native dependencies require rebuilt
67
+ apps. Register both Maps app identifiers and follow the generated configuration.
68
+
69
+ Background phone notifications require the customer's own Apple and Google
70
+ credentials, because the notifications are sent as their app. Enter them privately
71
+ in Robono's notification setup. The installer cannot invent those credentials.
72
+ Use the grouped native setup plugin; do not add duplicate audio or push handlers.
73
+ Preserve any existing global notification handler using the documented composition.
74
+
75
+ Website notifications use HTTPS and the supplied service worker. Preserve an
76
+ existing website worker and follow the dedicated Robono worker scope. Users opt in;
77
+ iPhone browser notifications require an installed Home Screen web app. Do not
78
+ promise notifications after every force-quit or denied operating-system permission.
79
+
80
+ ## Safe maintenance
81
+
82
+ - Check `.robono/setup.json`, `.robono/SETUP.md` and installed package versions
83
+ before changing an existing integration. Keep secrets and custom login code.
84
+ - Use `robono-messenger-install --project . --upgrade --dry-run` to review an
85
+ upgrade, then apply it. The installer preserves edited files and creates review
86
+ proposals. Review proposals individually; do not overwrite customer edits.
87
+ - Use `--resume` when dependency installation was interrupted. Do not regenerate
88
+ the integration in another directory or reinstall a second copy of the app.
89
+ - Use `robono-messenger-install --project . --check --json` for setup diagnostics.
90
+ Investigate the actual reported error. Do not disable permission checks or
91
+ substitute fictional success responses to make an error disappear.
92
+ - Keep production service URLs supplied by the hosted session. Never copy internal
93
+ infrastructure URLs, demonstration credentials or local development endpoints.
94
+ - Report which files changed, package versions, checks performed and remaining
95
+ customer-owned steps. Distinguish a local preview from actual delivery.
96
+
97
+ ## Reference order
98
+
99
+ Start with https://robono.com/llms.txt for the maintained documentation index.
100
+ The hosted guide explains the normal setup; published package types and generated
101
+ files define exact code. The API reference is for direct or advanced integrations.
102
+ Use self-hosted forwarding only when the customer explicitly chooses it.
103
+ If sources conflict, report the mismatch rather than inventing a configuration.
package/README.md CHANGED
@@ -1,6 +1,24 @@
1
1
  # `@robono/server`
2
2
 
3
- Headless Node/TypeScript SDK for connecting an existing app or private ecosystem to Robono Bridge.
3
+ Server SDK and project installer for Robono Messenger, Maps, calling and Bridge.
4
+
5
+ ## Start with the hosted connection
6
+
7
+ To try the supplied website interface first, run
8
+ `npx --package @robono/server robono-messenger-example --start`. It creates a complete
9
+ local fictional preview. Use `--live` for a separate test-account example, then
10
+ set its test key privately and run `npm start`. Existing folders are never overwritten.
11
+ The production application keeps its own verified login, using the installer below.
12
+
13
+ Coding assistants can follow [the integration instructions](https://robono.com/guides/assistant-integration.html)
14
+ and [documentation index](https://robono.com/llms.txt). The installer includes
15
+ `.robono/ASSISTANT.md` alongside its human-readable setup steps. AI use is optional.
16
+
17
+ Robono runs the messaging, media, calling and Maps services. Your server verifies your existing user login and returns a short-lived Robono session; it does not forward chat requests. Your company continues to supply its users, permitted contacts and group memberships.
18
+
19
+ Run `npx --package @robono/server robono-messenger-install` in your application project. The installer detects supported projects, creates the connection files and explains the remaining login and platform credentials. See [the hosted setup guide](https://robono.com/guides/hosted-messenger.html) for the recommended setup, supported frameworks and non-JavaScript server examples. The older self-hosted adapters below remain available with `--self-hosted`.
20
+
21
+ Never put your Robono API key or Apple/Google private keys in browser or phone code.
4
22
 
5
23
  ## License
6
24
 
@@ -11,10 +29,10 @@ Robono's own app and third-party connected apps appear as endpoints in the same
11
29
  ## Install
12
30
 
13
31
  ```bash
14
- npm install @robono/server@0.12.1
32
+ npm install @robono/server
15
33
  ```
16
34
 
17
- Version 0.12.1 is available on npm and through the [calling release](https://github.com/IMLX16/robono-sdks/releases/tag/calling-v0.2.1), with checksums and source.
35
+ Use the current package for the hosted setup; older releases retain their original adapter API.
18
36
 
19
37
  The package is ESM-only, supports Node.js 18+ and Deno 2.x through npm compatibility, and includes TypeScript declarations and `SBOM.spdx.json`.
20
38
 
@@ -490,3 +508,9 @@ Add `authorize` only when you need extra company-specific restrictions. Existing
490
508
  custom callbacks remain supported and can only restrict Robono's own checks.
491
509
  Omitting both `permissions` and `authorize` is rejected; the SDK does not silently
492
510
  change an existing customer's security policy.
511
+
512
+ ## Moving conversation history
513
+
514
+ Use `RobonoHistoryImport` or `robono-history-import` to bring existing messages into an empty conversation. Use `RobonoHistoryExport` or `robono-history-export` for private, resumable JSONL exports. These require a server-only `messaging:manage` key. [Import guide](https://robono.com/guides/history-import.html) · [Export guide](https://robono.com/guides/history-export.html). Exports include retained message data and file references; attachment binaries are not downloaded.
515
+
516
+ Public communities: [discovery, joining and moderator controls](https://robono.com/guides/public-groups.html).
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.24.0",
6
- "documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.24.0-***",
5
+ "name": "@robono/server@0.26.0",
6
+ "documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.26.0-***",
7
7
  "creationInfo": {
8
- "created": "2026-11-04T14:48:55.080Z",
8
+ "created": "2026-11-05T10:33:10.005Z",
9
9
  "creators": [
10
10
  "Tool: npm/cli-11.6.2"
11
11
  ]
12
12
  },
13
13
  "documentDescribes": [
14
- "SPDXRef-Package-robono.server-0.24.0"
14
+ "SPDXRef-Package-robono.server-0.26.0"
15
15
  ],
16
16
  "packages": [
17
17
  {
18
18
  "name": "@robono/server",
19
- "SPDXID": "SPDXRef-Package-robono.server-0.24.0",
20
- "versionInfo": "0.24.0",
19
+ "SPDXID": "SPDXRef-Package-robono.server-0.26.0",
20
+ "versionInfo": "0.26.0",
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.24.0"
32
+ "referenceLocator": "pkg:npm/%40robono/server@0.26.0"
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.24.0",
178
+ "relatedSpdxElement": "SPDXRef-Package-robono.server-0.26.0",
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.24.0",
183
+ "relatedSpdxElement": "SPDXRef-Package-robono.server-0.26.0",
184
184
  "relationshipType": "DEPENDENCY_OF"
185
185
  },
186
186
  {
@@ -1 +1 @@
1
- {"version":3,"file":"calling-session-handle.d.ts","sourceRoot":"","sources":["../src/calling-session-handle.ts"],"names":[],"mappings":"AACA;iFACiF;AACjF,wBAAgB,2BAA2B,CAAC,SAAS,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM;kBAK/D,MAAM,WAAS;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;iBAK/C,OAAO,WAAS,MAAM,GAAE;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;EAWpE"}
1
+ {"version":3,"file":"calling-session-handle.d.ts","sourceRoot":"","sources":["../src/calling-session-handle.ts"],"names":[],"mappings":"AAEA;iFACiF;AACjF,wBAAgB,2BAA2B,CAAC,SAAS,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM;kBAK/D,MAAM,WAAS;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;iBAK/C,OAAO,WAAS,MAAM,GAAE;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;EAWpE"}
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'node:buffer';
1
2
  import { createCipheriv, createDecipheriv, createHash, randomBytes } from 'node:crypto';
2
3
  /** Full call credentials stay encrypted between requests to the customer's route.
3
4
  * The browser receives a separate credential that can only hear change hints. */
@@ -1 +1 @@
1
- {"version":3,"file":"calling-session-handle.js","sourceRoot":"","sources":["../src/calling-session-handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calling-session-handle.js","sourceRoot":"","sources":["../src/calling-session-handle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { robonoSdkVersions } from './generated/sdk-versions.js';
1
2
  import { randomUUID } from "node:crypto";
2
3
  import { RobonoError } from "./errors.js";
3
4
  import { assertMessageAllowed, restrictionsFor, } from "./restrictions.js";
@@ -48,7 +49,7 @@ export class RobonoServer {
48
49
  code: "fetch_required",
49
50
  });
50
51
  }
51
- this.userAgent = options.userAgent ?? "@robono/server/0.9.0";
52
+ this.userAgent = options.userAgent ?? "@robono/server/" + robonoSdkVersions.server;
52
53
  this.apiVersion = options.apiVersion?.trim() || DEFAULT_API_VERSION;
53
54
  this.defaultLanguage = options.language?.trim() || undefined;
54
55
  this.directory = {