@robono/server 0.15.0 → 0.17.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 (38) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/NOTIFICATIONS.md +149 -0
  3. package/README.md +8 -1
  4. package/SBOM.spdx.json +8 -8
  5. package/SCREENING.md +73 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +5 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/managed-media.d.ts.map +1 -1
  11. package/dist/managed-media.js +2 -0
  12. package/dist/managed-media.js.map +1 -1
  13. package/dist/messaging-notification-postgres.d.ts +7 -0
  14. package/dist/messaging-notification-postgres.d.ts.map +1 -0
  15. package/dist/messaging-notification-postgres.js +32 -0
  16. package/dist/messaging-notification-postgres.js.map +1 -0
  17. package/dist/messaging-notification-providers.d.ts +26 -0
  18. package/dist/messaging-notification-providers.d.ts.map +1 -0
  19. package/dist/messaging-notification-providers.js +107 -0
  20. package/dist/messaging-notification-providers.js.map +1 -0
  21. package/dist/messaging-notifications.d.ts +66 -0
  22. package/dist/messaging-notifications.d.ts.map +1 -0
  23. package/dist/messaging-notifications.js +128 -0
  24. package/dist/messaging-notifications.js.map +1 -0
  25. package/dist/messaging.d.ts +7 -0
  26. package/dist/messaging.d.ts.map +1 -1
  27. package/dist/messaging.js +40 -2
  28. package/dist/messaging.js.map +1 -1
  29. package/dist/messenger.d.ts +53 -0
  30. package/dist/messenger.d.ts.map +1 -0
  31. package/dist/messenger.js +89 -0
  32. package/dist/messenger.js.map +1 -0
  33. package/dist/screening.d.ts +53 -0
  34. package/dist/screening.d.ts.map +1 -0
  35. package/dist/screening.js +52 -0
  36. package/dist/screening.js.map +1 -0
  37. package/package.json +5 -2
  38. package/sql/messaging-notifications.sql +41 -0
@@ -0,0 +1,66 @@
1
+ import type { MessagingCreatedWebhookEvent } from './types.js';
2
+ export interface MessagingPushData {
3
+ event: 'robono.messaging';
4
+ eventId: string;
5
+ conversationId: string;
6
+ messageId: string;
7
+ accountScope: string;
8
+ }
9
+ export interface MessagingPushDevice {
10
+ id: string;
11
+ userId: string;
12
+ provider: 'apns' | 'fcm';
13
+ token: string;
14
+ }
15
+ export interface MessagingPushJob {
16
+ id: string;
17
+ lease: string;
18
+ event: MessagingCreatedWebhookEvent;
19
+ device: MessagingPushDevice;
20
+ attempt: number;
21
+ }
22
+ export interface MessagingNotificationStore {
23
+ /** Register tokens only for the authenticated user; a token belongs to one account at a time. */
24
+ register(scope: string, device: MessagingPushDevice): Promise<void>;
25
+ remove(scope: string, userId: string, id: string, expectedToken?: string): Promise<void>;
26
+ /** Atomically snapshot this recipient's registered devices; duplicate events do not add jobs. */
27
+ enqueue(scope: string, event: MessagingCreatedWebhookEvent): Promise<void>;
28
+ claim(scope: string, limit: number, lease: string): Promise<MessagingPushJob[]>;
29
+ /** Recheck token ownership after taking a job and immediately before delivery. */
30
+ current(scope: string, device: MessagingPushDevice): Promise<boolean>;
31
+ finish(scope: string, job: MessagingPushJob, result: {
32
+ state: 'sent' | 'skipped' | 'retry' | 'failed';
33
+ retryAt?: Date;
34
+ code?: string;
35
+ }): Promise<void>;
36
+ }
37
+ export interface MessagingNotificationOptions {
38
+ /** Separate scope and webhook secret for each customer integration and test/live environment. */
39
+ scope: string;
40
+ webhookSecret: string;
41
+ store: MessagingNotificationStore;
42
+ authenticate: (request: Request) => Promise<string | null>;
43
+ /** Required: current account status, conversation access, block/mute state, message existence. */
44
+ mayNotify: (event: MessagingCreatedWebhookEvent) => Promise<boolean>;
45
+ send: (device: MessagingPushDevice, data: MessagingPushData) => Promise<{
46
+ accepted: boolean;
47
+ invalidDevice?: boolean;
48
+ retryable?: boolean;
49
+ code?: string;
50
+ }>;
51
+ /** Only providers with configured server credentials can be registered. */
52
+ providers: readonly ('apns' | 'fcm')[];
53
+ }
54
+ export declare function messagingNotificationAccount(scope: string, userId: string): string;
55
+ /** Durable, content-free notifications. Apple/Google acceptance is not a delivery/read receipt. */
56
+ export declare function createMessagingNotifications(options: MessagingNotificationOptions): {
57
+ devices(request: Request): Promise<Response>;
58
+ webhook(request: Request): Promise<Response>;
59
+ runPending(limit?: number): Promise<{
60
+ sent: number;
61
+ skipped: number;
62
+ retried: number;
63
+ failed: number;
64
+ }>;
65
+ };
66
+ //# sourceMappingURL=messaging-notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-notifications.d.ts","sourceRoot":"","sources":["../src/messaging-notifications.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { verifyRobonoWebhook } from './webhooks.js';
3
+ function id(value, max = 200) { return typeof value === 'string' && value.length > 0 && value.length <= max && value.trim() === value && !/[\u0000-\u001f\u007f]/.test(value); }
4
+ const reply = (data, status = 200) => Response.json(data, { status, headers: { 'cache-control': 'no-store' } });
5
+ export function messagingNotificationAccount(scope, userId) { return createHash('sha256').update(JSON.stringify([scope, userId])).digest('hex'); }
6
+ /** Durable, content-free notifications. Apple/Google acceptance is not a delivery/read receipt. */
7
+ export function createMessagingNotifications(options) {
8
+ if (!id(options.scope) || !options.webhookSecret.trim())
9
+ throw Error('Set a unique notification scope and this integration’s webhook secret.');
10
+ const { scope, store } = options;
11
+ return {
12
+ async devices(request) {
13
+ if (request.method !== 'POST')
14
+ return reply({ error: { code: 'method_not_allowed' } }, 405);
15
+ try {
16
+ const userId = await options.authenticate(request);
17
+ if (!id(userId))
18
+ return reply({ error: { code: 'authentication_required' } }, 401);
19
+ const raw = await request.text();
20
+ if (raw.length > 8192)
21
+ return reply({ error: { code: 'request_too_large' } }, 413);
22
+ let body;
23
+ try {
24
+ body = JSON.parse(raw);
25
+ }
26
+ catch {
27
+ return reply({ error: { code: 'invalid_request' } }, 422);
28
+ }
29
+ const accountScope = messagingNotificationAccount(scope, userId);
30
+ if (body?.operation === 'notification-status')
31
+ return reply({ userId, accountScope, providers: options.providers });
32
+ if (body?.accountScope !== accountScope)
33
+ return reply({ error: { code: 'notification_account_changed' } }, 409);
34
+ if (!body || typeof body !== 'object' || !id(body.deviceId))
35
+ return reply({ error: { code: 'invalid_device' } }, 422);
36
+ if (body.operation === 'remove-device') {
37
+ await store.remove(scope, userId, body.deviceId);
38
+ return reply({ ok: true });
39
+ }
40
+ if (body.operation !== 'register-device' || !['apns', 'fcm'].includes(String(body.provider)) || !id(body.token, 4096))
41
+ return reply({ error: { code: 'invalid_device' } }, 422);
42
+ const provider = body.provider;
43
+ if (!options.providers.includes(provider))
44
+ return reply({ error: { code: 'notification_credentials_missing', message: provider === 'apns' ? 'Your app’s Apple notification credentials have not been connected.' : 'Your app’s Google notification credentials have not been connected.' } }, 409);
45
+ if (provider === 'apns' && !/^[a-f\d]{64,200}$/i.test(body.token))
46
+ return reply({ error: { code: 'invalid_device' } }, 422);
47
+ await store.register(scope, { id: body.deviceId, userId, provider, token: body.token });
48
+ return reply({ ok: true, accountScope: messagingNotificationAccount(scope, userId) });
49
+ }
50
+ catch {
51
+ return reply({ error: { code: 'notifications_unavailable' } }, 503);
52
+ }
53
+ },
54
+ async webhook(request) {
55
+ if (request.method !== 'POST')
56
+ return reply({ error: { code: 'method_not_allowed' } }, 405);
57
+ const raw = await request.text();
58
+ if (raw.length > 32768)
59
+ return reply({ error: { code: 'request_too_large' } }, 413);
60
+ let event;
61
+ try {
62
+ ({ event } = await verifyRobonoWebhook(raw, request.headers, options.webhookSecret));
63
+ }
64
+ catch {
65
+ return reply({ error: { code: 'invalid_webhook' } }, 401);
66
+ }
67
+ if (event.event !== 'messaging.message_created')
68
+ return reply({ ignored: true });
69
+ // Do not acknowledge until the queue insert is durable. Delivery is retried by the worker.
70
+ try {
71
+ await store.enqueue(scope, event);
72
+ return reply({ queued: true }, 202);
73
+ }
74
+ catch {
75
+ return reply({ error: { code: 'notifications_unavailable' } }, 503);
76
+ }
77
+ },
78
+ async runPending(limit = 20) {
79
+ if (!Number.isInteger(limit) || limit < 1 || limit > 100)
80
+ throw Error('Use a notification batch size from 1 to 100.');
81
+ const result = { sent: 0, skipped: 0, retried: 0, failed: 0 };
82
+ // Small batches avoid unbounded fanout and provider rate spikes.
83
+ for (let index = 0; index < limit; index++) {
84
+ const [job] = await store.claim(scope, 1, randomUUID());
85
+ if (!job)
86
+ break;
87
+ try {
88
+ const event = job.event;
89
+ if (job.device.userId !== event.recipient_external_user_id || event.notification_muted === true ||
90
+ Date.parse(event.created_at) < Date.now() - 86400000 || !await options.mayNotify(event) || !await store.current(scope, job.device)) {
91
+ await store.finish(scope, job, { state: 'skipped' });
92
+ result.skipped++;
93
+ continue;
94
+ }
95
+ const data = { event: 'robono.messaging', eventId: event.event_id,
96
+ conversationId: event.conversation_id, messageId: event.message_id, accountScope: messagingNotificationAccount(scope, job.device.userId) };
97
+ const sent = await options.send(job.device, data);
98
+ if (sent.invalidDevice) {
99
+ await store.remove(scope, job.device.userId, job.device.id, job.device.token);
100
+ await store.finish(scope, job, { state: 'skipped', code: 'device_unregistered' });
101
+ result.skipped++;
102
+ }
103
+ else if (sent.accepted) {
104
+ await store.finish(scope, job, { state: 'sent' });
105
+ result.sent++;
106
+ }
107
+ else if (sent.retryable !== false && job.attempt < 8) {
108
+ await store.finish(scope, job, { state: 'retry', retryAt: new Date(Date.now() + Math.min(3600000, 15000 * 2 ** job.attempt)), code: sent.code ?? 'provider_unavailable' });
109
+ result.retried++;
110
+ }
111
+ else {
112
+ await store.finish(scope, job, { state: 'failed', code: sent.code ?? 'provider_rejected' });
113
+ result.failed++;
114
+ }
115
+ }
116
+ catch {
117
+ await store.finish(scope, job, job.attempt < 8 ? { state: 'retry', retryAt: new Date(Date.now() + Math.min(3600000, 15000 * 2 ** job.attempt)), code: 'delivery_unavailable' } : { state: 'failed', code: 'delivery_unavailable' });
118
+ if (job.attempt < 8)
119
+ result.retried++;
120
+ else
121
+ result.failed++;
122
+ }
123
+ }
124
+ return result;
125
+ },
126
+ };
127
+ }
128
+ //# sourceMappingURL=messaging-notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-notifications.js","sourceRoot":"","sources":["../src/messaging-notifications.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,7 @@ export declare class RobonoMessagingBackend {
40
40
  revision: number;
41
41
  allowed: boolean;
42
42
  supergroup?: boolean;
43
+ ownerId?: string;
43
44
  members: {
44
45
  userId: string;
45
46
  canSend: boolean;
@@ -56,6 +57,12 @@ export declare class RobonoMessagingBackend {
56
57
  reviewerId: string;
57
58
  }): Promise<any>;
58
59
  settings(): Promise<any>;
60
+ /** Recheck the live recipient, message, membership, blocks and mute state before an alert. */
61
+ canNotify(input: {
62
+ userId: string;
63
+ conversationId: string;
64
+ messageId: string;
65
+ }): Promise<any>;
59
66
  /** Erases this user's hosted conversations. Delete the corresponding private media in your own store too. */
60
67
  eraseUser(userId: string): Promise<any>;
61
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
package/dist/messaging.js CHANGED
@@ -53,6 +53,21 @@ export class RobonoMessagingBackend {
53
53
  settings() {
54
54
  return this.request("settings");
55
55
  }
56
+ /** Recheck the live recipient, message, membership, blocks and mute state before an alert. */
57
+ async canNotify(input) {
58
+ try {
59
+ const result = await this.request('list', { actorId: input.userId, conversationId: input.conversationId,
60
+ messageIds: [input.messageId], notificationMessageId: input.messageId });
61
+ if (typeof result.notificationAllowed !== 'boolean')
62
+ throw new RobonoError('Install the notification-access service update before enabling alerts.', { status: 503, code: 'notification_access_unavailable', retryable: true });
63
+ return result.notificationAllowed;
64
+ }
65
+ catch (error) {
66
+ if (error instanceof RobonoError && [401, 403, 404].includes(error.status ?? 0))
67
+ return false;
68
+ throw error;
69
+ }
70
+ }
56
71
  /** Erases this user's hosted conversations. Delete the corresponding private media in your own store too. */
57
72
  eraseUser(userId) {
58
73
  return this.request("erase-user", { userId });
@@ -78,7 +93,7 @@ export function createMessagingBackendAdapter(options) {
78
93
  return respond({ error: { code: "authentication_required" } }, 401);
79
94
  }
80
95
  const raw = await request.text();
81
- if (raw.length > 20000) {
96
+ if (raw.length > 900000) {
82
97
  return respond({ error: { code: "request_too_large" } }, 413);
83
98
  }
84
99
  let body;
@@ -92,9 +107,15 @@ export function createMessagingBackendAdapter(options) {
92
107
  return respond({ error: { code: "invalid_request" } }, 422);
93
108
  }
94
109
  const operation = String(body.operation ?? "");
95
- if (!["settings", "send", "edit", "delete", "consume", "conversation-preferences", "conversation-delete", "send-call-message", "call-message-options", "list", "search", "social-preview", "conversations", "seen", "presence-update", "wait", "group-members", "read", "react", "vote", "close-poll", "inventory", "safety", "block", "unblock", "report"].includes(operation))
110
+ if (raw.length > 20000 && !["group-create", "group-update"].includes(operation))
111
+ return respond({ error: { code: "request_too_large" } }, 413);
112
+ if (!["settings", "send", "edit", "delete", "consume", "conversation-preferences", "conversation-delete", "send-call-message", "call-message-options", "list", "search", "social-preview", "conversations", "seen", "presence-update", "wait", "group-members", "group-create", "group-update", "group-leave", "read", "react", "pin", "vote", "close-poll", "inventory", "safety", "block", "unblock", "report"].includes(operation))
96
113
  return respond({ error: { code: "operation_not_allowed" } }, 403);
97
114
  const input = { ...body, actorId };
115
+ if (['list', 'conversations', 'group-members'].includes(operation)) {
116
+ input.groupControlsVersion = 1;
117
+ input.discussionVersion = 1;
118
+ }
98
119
  delete input.operation;
99
120
  if (!await options.authorize({ actorId, operation: operation === 'wait' || operation === 'social-preview' ? 'list' : operation, input, request })) {
100
121
  return respond({ error: { code: "operation_not_allowed" } }, 403);
@@ -143,6 +164,23 @@ export function createMessagingBackendAdapter(options) {
143
164
  // Check each preview against that customer's current list permission too.
144
165
  const allowed = await Promise.all(result.conversations.map(async (row) => typeof row.id === 'string' && await options.authorize({ actorId, operation: 'list', input: { actorId, conversationId: row.id }, request })));
145
166
  result.conversations = result.conversations.filter((_row, index) => allowed[index]);
167
+ if (input.query !== undefined) {
168
+ if (result.globalSearchAvailable !== true || !Array.isArray(result.searchResults) || result.searchResults.length > 50)
169
+ return respond({ error: { code: 'search_unavailable' } }, 503);
170
+ const decisions = new Map();
171
+ const searchAllowed = await Promise.all(result.searchResults.map((row) => {
172
+ const id = row.conversation?.id;
173
+ if (typeof id !== 'string' || row.message?.conversationId !== id)
174
+ return false;
175
+ let decision = decisions.get(id);
176
+ if (!decision) {
177
+ decision = options.authorize({ actorId, operation: 'list', input: { actorId, conversationId: id }, request });
178
+ decisions.set(id, decision);
179
+ }
180
+ return decision;
181
+ }));
182
+ result.searchResults = result.searchResults.filter((_row, index) => searchAllowed[index]);
183
+ }
146
184
  if (await options.authenticate(request) !== actorId)
147
185
  return respond({ error: { code: 'authentication_required' } }, 401);
148
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { RobonoMessagingBackend } from './messaging.js';
2
+ import { type MessagingPrivateStorage, type MessagingStoredMedia } from './messaging-media.js';
3
+ import { type AppleMessagingCredentials, type GoogleMessagingCredentials } from './messaging-notification-providers.js';
4
+ import { type MessagingNotificationQuery } from './messaging-notification-postgres.js';
5
+ export interface MessengerAccess {
6
+ actorId: string;
7
+ operation: string;
8
+ conversationId?: string;
9
+ uploadId?: string;
10
+ input: Record<string, unknown>;
11
+ request: Request;
12
+ }
13
+ export interface RobonoMessengerServerOptions {
14
+ apiKey: string;
15
+ /** Validate your existing session, including expiry and account suspension. */
16
+ authenticate: (request: Request) => Promise<string | null>;
17
+ /** Your current app permissions; Robono independently enforces membership and feature access. */
18
+ authorize: (access: MessengerAccess) => Promise<boolean>;
19
+ /** Managed private attachments are the default. False deliberately disables them. */
20
+ storage?: (MessagingPrivateStorage & {
21
+ resolve: (input: {
22
+ actorId: string;
23
+ conversationId: string;
24
+ assetId: string;
25
+ }) => Promise<MessagingStoredMedia | null>;
26
+ }) | false;
27
+ messagingUrl?: string;
28
+ mediaUrl?: string;
29
+ fetch?: typeof fetch;
30
+ /** Same-origin cookie sessions must supply their exact allowed origin(s). */
31
+ allowedOrigins?: readonly string[];
32
+ notifications?: {
33
+ scope: string;
34
+ webhookSecret: string;
35
+ workerSecret: string;
36
+ query: MessagingNotificationQuery;
37
+ apple?: AppleMessagingCredentials;
38
+ google?: GoogleMessagingCredentials;
39
+ title?: string;
40
+ /** Current customer account and chat policy, even when the user is not signed in. */
41
+ authorizeRecipient: (input: {
42
+ userId: string;
43
+ conversationId: string;
44
+ }) => Promise<boolean>;
45
+ };
46
+ }
47
+ /** One authenticated route for messaging and managed media. No account or permission bypass. */
48
+ export declare function createRobonoMessengerServer(options: RobonoMessengerServerOptions): {
49
+ /** Keep relationship and group synchronization on the server. */
50
+ robono: RobonoMessagingBackend;
51
+ handle(request: Request): Promise<Response>;
52
+ };
53
+ //# sourceMappingURL=messenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAgC,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAqC,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAGjI,OAAO,EAA2B,KAAK,yBAAyB,EAAC,KAAK,0BAA0B,EAAC,MAAM,uCAAuC,CAAC;AAC/I,OAAO,EAA0C,KAAK,0BAA0B,EAAC,MAAM,sCAAsC,CAAC;AAE9H,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAC,MAAM,CAAC;IACf,SAAS,EAAC,MAAM,CAAC;IACjB,cAAc,CAAC,EAAC,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,KAAK,EAAC,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAC,OAAO,CAAC;CACjB;AACD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAC,MAAM,CAAC;IACd,+EAA+E;IAC/E,YAAY,EAAC,CAAC,OAAO,EAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAAC;IACrD,iGAAiG;IACjG,SAAS,EAAC,CAAC,MAAM,EAAC,eAAe,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,qFAAqF;IACrF,OAAO,CAAC,EAAC,CAAC,uBAAuB,GAAG;QAAC,OAAO,EAAC,CAAC,KAAK,EAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAA,cAAc,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAA;SAAC,KAAG,OAAO,CAAC,oBAAoB,GAAC,IAAI,CAAC,CAAA;KAAC,CAAC,GAAC,KAAK,CAAC;IACvJ,YAAY,CAAC,EAAC,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,KAAK,CAAC,EAAC,OAAO,KAAK,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAC,SAAS,MAAM,EAAE,CAAC;IAClC,aAAa,CAAC,EAAC;QACb,KAAK,EAAC,MAAM,CAAC;QAAA,aAAa,EAAC,MAAM,CAAC;QAAA,YAAY,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,0BAA0B,CAAC;QACvF,KAAK,CAAC,EAAC,yBAAyB,CAAC;QAAA,MAAM,CAAC,EAAC,0BAA0B,CAAC;QAAA,KAAK,CAAC,EAAC,MAAM,CAAC;QAClF,qFAAqF;QACrF,kBAAkB,EAAC,CAAC,KAAK,EAAC;YAAC,MAAM,EAAC,MAAM,CAAC;YAAA,cAAc,EAAC,MAAM,CAAA;SAAC,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACpF,CAAC;CACH;AAED,gGAAgG;AAChG,wBAAgB,2BAA2B,CAAC,OAAO,EAAC,4BAA4B;IAoC5E,iEAAiE;;oBAE5C,OAAO,GAAE,OAAO,CAAC,QAAQ,CAAC;EAyBlD"}
@@ -0,0 +1,89 @@
1
+ import { RobonoMessagingBackend, createMessagingBackendAdapter } from './messaging.js';
2
+ import { RobonoManagedMedia } from './managed-media.js';
3
+ import { createMessagingMediaBackendAdapter } from './messaging-media.js';
4
+ import { createHash, timingSafeEqual } from 'node:crypto';
5
+ import { createMessagingNotifications } from './messaging-notifications.js';
6
+ import { createMessagingPushSender } from './messaging-notification-providers.js';
7
+ import { createPostgresMessagingNotificationStore } from './messaging-notification-postgres.js';
8
+ /** One authenticated route for messaging and managed media. No account or permission bypass. */
9
+ export function createRobonoMessengerServer(options) {
10
+ if (typeof options.authenticate !== 'function' || typeof options.authorize !== 'function')
11
+ throw Error('Connect your existing sign-in and permission checks. Both are required.');
12
+ const common = { apiKey: options.apiKey, ...(options.fetch ? { fetch: options.fetch } : {}) };
13
+ const robono = new RobonoMessagingBackend({ ...common, ...(options.messagingUrl ? { baseUrl: options.messagingUrl } : {}) });
14
+ const storage = options.storage === false ? null : options.storage ?? new RobonoManagedMedia({ ...common, ...(options.mediaUrl ? { baseUrl: options.mediaUrl } : {}) });
15
+ const origins = new Set((options.allowedOrigins ?? []).map(value => {
16
+ const url = new URL(value);
17
+ if (url.origin !== value || !['https:', 'http:'].includes(url.protocol))
18
+ throw Error('Use exact origins without a path.');
19
+ return url.origin;
20
+ }));
21
+ if (options.notifications && (!options.notifications.workerSecret || options.notifications.workerSecret.length < 32))
22
+ throw Error('Set a separate notification worker secret of at least 32 characters.');
23
+ const authenticate = async (request) => {
24
+ const actor = await options.authenticate(request);
25
+ return typeof actor === 'string' && actor.trim() === actor && actor.length > 0 && actor.length <= 200 && !/[\u0000-\u001f\u007f]/.test(actor) ? actor : null;
26
+ };
27
+ const push = options.notifications ? createMessagingPushSender({ ...options.notifications, ...(options.fetch ? { fetch: options.fetch } : {}) }) : null;
28
+ const notifications = options.notifications && push ? createMessagingNotifications({
29
+ scope: options.notifications.scope, webhookSecret: options.notifications.webhookSecret,
30
+ store: createPostgresMessagingNotificationStore(options.notifications.query), authenticate,
31
+ providers: push.providers, send: push.send,
32
+ mayNotify: async (event) => await options.notifications.authorizeRecipient({ userId: event.recipient_external_user_id, conversationId: event.conversation_id }) &&
33
+ await robono.canNotify({ userId: event.recipient_external_user_id, conversationId: event.conversation_id, messageId: event.message_id }),
34
+ }) : null;
35
+ const messages = createMessagingBackendAdapter({ robono, authenticate,
36
+ authorize: access => options.storage === false && ['send', 'send-call-message', 'edit'].includes(access.operation) && access.input.kind !== undefined && !['text', 'poll'].includes(String(access.input.kind)) ? Promise.resolve(false) : options.authorize({ ...access,
37
+ ...(typeof access.input.conversationId === 'string' ? { conversationId: access.input.conversationId } : {}),
38
+ }), ...(storage ? { resolveMedia: (input) => storage.resolve(input) } : {}),
39
+ });
40
+ const media = storage ? createMessagingMediaBackendAdapter({ robono, storage, authenticate,
41
+ authorize: ({ actorId, operation, conversationId, uploadId, request }) => options.authorize({ actorId,
42
+ operation: 'media.' + operation, ...(conversationId ? { conversationId } : {}), ...(uploadId ? { uploadId } : {}),
43
+ input: { ...(conversationId ? { conversationId } : {}), ...(uploadId ? { uploadId } : {}) }, request,
44
+ }),
45
+ }) : null;
46
+ const failure = (code, status) => Response.json({ error: { code } }, { status, headers: { 'cache-control': 'no-store' } });
47
+ return {
48
+ /** Keep relationship and group synchronization on the server. */
49
+ robono,
50
+ async handle(request) {
51
+ if (request.method !== 'POST')
52
+ return failure('method_not_allowed', 405);
53
+ const route = new URL(request.url).searchParams.get('service') ?? 'messages';
54
+ if (route === 'events')
55
+ return notifications ? notifications.webhook(request) : failure('notifications_not_configured', 409);
56
+ if (route === 'notification-worker') {
57
+ if (!notifications)
58
+ return failure('notifications_not_configured', 409);
59
+ const expected = createHash('sha256').update('Bearer ' + options.notifications.workerSecret).digest();
60
+ const received = createHash('sha256').update(request.headers.get('authorization') ?? '').digest();
61
+ if (!timingSafeEqual(expected, received))
62
+ return failure('authentication_required', 401);
63
+ try {
64
+ return Response.json(await notifications.runPending(), { headers: { 'cache-control': 'no-store' } });
65
+ }
66
+ catch {
67
+ return failure('notification_worker_unavailable', 503);
68
+ }
69
+ }
70
+ // The public route is safe with cookies too: require explicit trusted origins.
71
+ // Bearer-only native/server clients do not send an Origin header.
72
+ const origin = request.headers.get('origin');
73
+ if (origin && !origins.has(origin))
74
+ return failure('origin_not_allowed', 403);
75
+ if (!origin && !/^Bearer\s+\S+$/i.test(request.headers.get('authorization') ?? ''))
76
+ return failure('authentication_required', 401);
77
+ if (!request.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase().match(/^application\/json$/))
78
+ return failure('json_required', 415);
79
+ if (route === 'messages')
80
+ return messages(request);
81
+ if (route === 'media')
82
+ return media ? media(request) : failure('attachments_disabled', 403);
83
+ if (route === 'notifications')
84
+ return notifications ? notifications.devices(request) : failure('notifications_not_configured', 409);
85
+ return failure('service_not_found', 404);
86
+ },
87
+ };
88
+ }
89
+ //# sourceMappingURL=messenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export type ScreeningFile = {
2
+ kind: 'image' | 'video';
3
+ mimeType: string;
4
+ byteSize: number;
5
+ fileName: string;
6
+ durationMs?: number;
7
+ };
8
+ export type ScreeningResult = {
9
+ id: string;
10
+ state: 'uploading' | 'queued' | 'processing' | 'allowed' | 'blocked' | 'failed';
11
+ kind: 'image' | 'video';
12
+ categories: string[];
13
+ sha256: string | null;
14
+ error: string | null;
15
+ chargedMicros: number;
16
+ reservedMicros: number;
17
+ createdAt: string;
18
+ finishedAt: string | null;
19
+ };
20
+ /** Server-only. Existing connected networks use their Robono Processing API key. */
21
+ export declare class RobonoScreening {
22
+ private options;
23
+ private url;
24
+ constructor(options: {
25
+ apiKey: string;
26
+ baseUrl?: string;
27
+ fetch?: typeof fetch;
28
+ });
29
+ private request;
30
+ prepare(requestId: string, file: ScreeningFile): Promise<ScreeningResult & {
31
+ upload?: {
32
+ url: string;
33
+ headers: Record<string, string>;
34
+ };
35
+ }>;
36
+ submit(id: string): Promise<ScreeningResult & {
37
+ upload?: {
38
+ url: string;
39
+ headers: Record<string, string>;
40
+ };
41
+ }>;
42
+ status(id: string): Promise<ScreeningResult & {
43
+ upload?: {
44
+ url: string;
45
+ headers: Record<string, string>;
46
+ };
47
+ }>;
48
+ /** Upload exactly the bytes to be published. Returns a job; never treats pending as approved. */
49
+ upload(requestId: string, file: ScreeningFile, bytes: Uint8Array): Promise<ScreeningResult>;
50
+ /** Call this before releasing bytes stored by your own application. */
51
+ assertAllowed(id: string, bytes: Uint8Array): Promise<ScreeningResult>;
52
+ }
53
+ //# sourceMappingURL=screening.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screening.d.ts","sourceRoot":"","sources":["../src/screening.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAC;IAAC,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAA;CAAC,CAAC;AACpH,MAAM,MAAM,eAAe,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,WAAW,GAAC,QAAQ,GAAC,YAAY,GAAC,SAAS,GAAC,SAAS,GAAC,QAAQ,CAAC;IAAA,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAAA,UAAU,EAAC,MAAM,EAAE,CAAC;IAAA,MAAM,EAAC,MAAM,GAAC,IAAI,CAAC;IAAA,KAAK,EAAC,MAAM,GAAC,IAAI,CAAC;IAAA,aAAa,EAAC,MAAM,CAAC;IAAA,cAAc,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,GAAC,IAAI,CAAA;CAAC,CAAC;AAC9Q,oFAAoF;AACpF,qBAAa,eAAe;IAEf,OAAO,CAAC,OAAO;IAD3B,OAAO,CAAC,GAAG,CAAQ;gBACC,OAAO,EAAC;QAAC,MAAM,EAAC,MAAM,CAAC;QAAA,OAAO,CAAC,EAAC,MAAM,CAAC;QAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;KAAC;YAIjE,OAAO;IAMrB,OAAO,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,aAAa;iBAN0C;YAAC,GAAG,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;SAAC;;IAO/H,MAAM,CAAC,EAAE,EAAC,MAAM;iBAPqE;YAAC,GAAG,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;SAAC;;IAQ/H,MAAM,CAAC,EAAE,EAAC,MAAM;iBARqE;YAAC,GAAG,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;SAAC;;IAS/H,iGAAiG;IAC3F,MAAM,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAC,UAAU,GAAE,OAAO,CAAC,eAAe,CAAC;IAY3F,uEAAuE;IACjE,aAAa,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,UAAU,GAAE,OAAO,CAAC,eAAe,CAAC;CAKxE"}