@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.
- package/CHANGELOG.md +8 -0
- package/HISTORY-IMPORT.md +110 -0
- package/HOSTED.md +241 -0
- package/INTEGRATION-ASSISTANT.md +103 -0
- package/README.md +27 -3
- package/SBOM.spdx.json +9 -9
- package/dist/calling-session-handle.d.ts.map +1 -1
- package/dist/calling-session-handle.js +1 -0
- package/dist/calling-session-handle.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/client.js.map +1 -1
- package/dist/generated/custom-messages.d.ts +31 -0
- package/dist/generated/custom-messages.d.ts.map +1 -0
- package/dist/generated/custom-messages.js +84 -0
- package/dist/generated/custom-messages.js.map +1 -0
- package/dist/generated/sdk-versions.d.ts +13 -0
- package/dist/generated/sdk-versions.d.ts.map +1 -0
- package/dist/generated/sdk-versions.js +4 -0
- package/dist/generated/sdk-versions.js.map +1 -0
- package/dist/history-export-cli.d.ts +4 -0
- package/dist/history-export-cli.d.ts.map +1 -0
- package/dist/history-export-cli.js +166 -0
- package/dist/history-export-cli.js.map +1 -0
- package/dist/history-export-files.d.ts +39 -0
- package/dist/history-export-files.d.ts.map +1 -0
- package/dist/history-export-files.js +119 -0
- package/dist/history-export-files.js.map +1 -0
- package/dist/history-export.d.ts +92 -0
- package/dist/history-export.d.ts.map +1 -0
- package/dist/history-export.js +78 -0
- package/dist/history-export.js.map +1 -0
- package/dist/history-import-cli.d.ts +11 -0
- package/dist/history-import-cli.d.ts.map +1 -0
- package/dist/history-import-cli.js +94 -0
- package/dist/history-import-cli.js.map +1 -0
- package/dist/history-import.d.ts +66 -0
- package/dist/history-import.d.ts.map +1 -0
- package/dist/history-import.js +69 -0
- package/dist/history-import.js.map +1 -0
- package/dist/hosted-sessions.d.ts +38 -0
- package/dist/hosted-sessions.d.ts.map +1 -0
- package/dist/hosted-sessions.js +68 -0
- package/dist/hosted-sessions.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-assistant.txt +103 -0
- package/dist/managed-media.d.ts +2 -1
- package/dist/managed-media.d.ts.map +1 -1
- package/dist/managed-media.js +1 -1
- package/dist/managed-media.js.map +1 -1
- package/dist/messaging-notification-providers.d.ts +2 -3
- package/dist/messaging-notification-providers.d.ts.map +1 -1
- package/dist/messaging-notification-providers.js +1 -0
- package/dist/messaging-notification-providers.js.map +1 -1
- package/dist/messaging-push-worker.d.ts.map +1 -1
- package/dist/messaging-push-worker.js +3 -2
- package/dist/messaging-push-worker.js.map +1 -1
- package/dist/messaging.d.ts +5 -0
- package/dist/messaging.d.ts.map +1 -1
- package/dist/messaging.js +11 -2
- package/dist/messaging.js.map +1 -1
- package/dist/messenger-check.d.ts +1 -0
- package/dist/messenger-check.d.ts.map +1 -1
- package/dist/messenger-check.js +7 -5
- package/dist/messenger-check.js.map +1 -1
- package/dist/messenger-connected-templates.d.ts.map +1 -1
- package/dist/messenger-connected-templates.js +9 -6
- package/dist/messenger-connected-templates.js.map +1 -1
- package/dist/messenger-example-cli.d.ts +3 -0
- package/dist/messenger-example-cli.d.ts.map +1 -0
- package/dist/messenger-example-cli.js +47 -0
- package/dist/messenger-example-cli.js.map +1 -0
- package/dist/messenger-example.d.ts +9 -0
- package/dist/messenger-example.d.ts.map +1 -0
- package/dist/messenger-example.js +42 -0
- package/dist/messenger-example.js.map +1 -0
- package/dist/messenger-example.json +1 -0
- package/dist/messenger-framework-templates.d.ts +3 -0
- package/dist/messenger-framework-templates.d.ts.map +1 -0
- package/dist/messenger-framework-templates.js +68 -0
- package/dist/messenger-framework-templates.js.map +1 -0
- package/dist/messenger-hosted-install.d.ts +3 -0
- package/dist/messenger-hosted-install.d.ts.map +1 -0
- package/dist/messenger-hosted-install.js +109 -0
- package/dist/messenger-hosted-install.js.map +1 -0
- package/dist/messenger-hosted-templates.d.ts +6 -0
- package/dist/messenger-hosted-templates.d.ts.map +1 -0
- package/dist/messenger-hosted-templates.js +84 -0
- package/dist/messenger-hosted-templates.js.map +1 -0
- package/dist/messenger-install-cli.js +10 -7
- package/dist/messenger-install-cli.js.map +1 -1
- package/dist/messenger-install.d.ts +24 -1
- package/dist/messenger-install.d.ts.map +1 -1
- package/dist/messenger-install.js +24 -9
- package/dist/messenger-install.js.map +1 -1
- package/dist/messenger-node.d.ts.map +1 -1
- package/dist/messenger-node.js +1 -0
- package/dist/messenger-node.js.map +1 -1
- package/dist/messenger-preview-template.d.ts.map +1 -1
- package/dist/messenger-preview-template.js +1 -0
- package/dist/messenger-preview-template.js.map +1 -1
- package/dist/messenger-upgrade.js +1 -1
- package/dist/messenger-upgrade.js.map +1 -1
- 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
|
-
|
|
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
|
|
32
|
+
npm install @robono/server
|
|
15
33
|
```
|
|
16
34
|
|
|
17
|
-
|
|
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.
|
|
6
|
-
"documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-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-
|
|
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.
|
|
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.
|
|
20
|
-
"versionInfo": "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.
|
|
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.
|
|
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.
|
|
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":"
|
|
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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"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
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/
|
|
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 = {
|