@robono/server 0.21.0 → 0.23.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 (82) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +30 -2
  3. package/SBOM.spdx.json +9 -9
  4. package/dist/calling-session-handle.d.ts +13 -0
  5. package/dist/calling-session-handle.d.ts.map +1 -0
  6. package/dist/calling-session-handle.js +37 -0
  7. package/dist/calling-session-handle.js.map +1 -0
  8. package/dist/calling.d.ts +1 -0
  9. package/dist/calling.d.ts.map +1 -1
  10. package/dist/calling.js +1 -1
  11. package/dist/calling.js.map +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/location.d.ts.map +1 -1
  17. package/dist/location.js +3 -0
  18. package/dist/location.js.map +1 -1
  19. package/dist/messaging-extras-contract.d.ts +14 -0
  20. package/dist/messaging-extras-contract.d.ts.map +1 -0
  21. package/dist/messaging-extras-contract.js +94 -0
  22. package/dist/messaging-extras-contract.js.map +1 -0
  23. package/dist/messaging-extras.d.ts +10 -0
  24. package/dist/messaging-extras.d.ts.map +1 -0
  25. package/dist/messaging-extras.js +42 -0
  26. package/dist/messaging-extras.js.map +1 -0
  27. package/dist/messaging-notification-providers.d.ts +20 -1
  28. package/dist/messaging-notification-providers.d.ts.map +1 -1
  29. package/dist/messaging-notification-providers.js +16 -5
  30. package/dist/messaging-notification-providers.js.map +1 -1
  31. package/dist/messaging-push-worker.d.ts.map +1 -1
  32. package/dist/messaging-push-worker.js +22 -2
  33. package/dist/messaging-push-worker.js.map +1 -1
  34. package/dist/messenger-calling.d.ts +14 -0
  35. package/dist/messenger-calling.d.ts.map +1 -0
  36. package/dist/messenger-calling.js +173 -0
  37. package/dist/messenger-calling.js.map +1 -0
  38. package/dist/messenger-check.d.ts.map +1 -1
  39. package/dist/messenger-check.js +3 -1
  40. package/dist/messenger-check.js.map +1 -1
  41. package/dist/messenger-connected-templates.d.ts.map +1 -1
  42. package/dist/messenger-connected-templates.js +5 -2
  43. package/dist/messenger-connected-templates.js.map +1 -1
  44. package/dist/messenger-connections.d.ts +31 -0
  45. package/dist/messenger-connections.d.ts.map +1 -0
  46. package/dist/messenger-connections.js +18 -0
  47. package/dist/messenger-connections.js.map +1 -0
  48. package/dist/messenger-customer-templates.d.ts.map +1 -1
  49. package/dist/messenger-customer-templates.js +2 -0
  50. package/dist/messenger-customer-templates.js.map +1 -1
  51. package/dist/messenger-init.d.ts.map +1 -1
  52. package/dist/messenger-init.js +9 -5
  53. package/dist/messenger-init.js.map +1 -1
  54. package/dist/messenger-install-cli.js +23 -6
  55. package/dist/messenger-install-cli.js.map +1 -1
  56. package/dist/messenger-install.d.ts +11 -1
  57. package/dist/messenger-install.d.ts.map +1 -1
  58. package/dist/messenger-install.js +260 -62
  59. package/dist/messenger-install.js.map +1 -1
  60. package/dist/messenger-node.d.ts +14 -0
  61. package/dist/messenger-node.d.ts.map +1 -0
  62. package/dist/messenger-node.js +127 -0
  63. package/dist/messenger-node.js.map +1 -0
  64. package/dist/messenger-upgrade.d.ts +21 -0
  65. package/dist/messenger-upgrade.d.ts.map +1 -0
  66. package/dist/messenger-upgrade.js +136 -0
  67. package/dist/messenger-upgrade.js.map +1 -0
  68. package/dist/messenger-vite-templates.d.ts +12 -0
  69. package/dist/messenger-vite-templates.d.ts.map +1 -0
  70. package/dist/messenger-vite-templates.js +89 -0
  71. package/dist/messenger-vite-templates.js.map +1 -0
  72. package/dist/messenger.d.ts +16 -0
  73. package/dist/messenger.d.ts.map +1 -1
  74. package/dist/messenger.js +28 -1
  75. package/dist/messenger.js.map +1 -1
  76. package/legacy/0.21.0/messenger-connected-templates.js +138 -0
  77. package/legacy/0.21.0/messenger-customer-templates.js +111 -0
  78. package/legacy/0.21.0/messenger-init.js +121 -0
  79. package/legacy/0.21.0/messenger-install.js +243 -0
  80. package/legacy/0.21.0/messenger-preview-template.js +43 -0
  81. package/legacy/0.21.0/package.json +1 -0
  82. package/package.json +11 -2
@@ -1,12 +1,17 @@
1
1
  import { createHash, createPrivateKey, sign } from 'node:crypto';
2
2
  import { connect } from 'node:http2';
3
+ export function notificationPresentation(data, now = Date.now()) {
4
+ const call = data.event !== 'robono.messaging', dismissed = call && data.event.endsWith('dismissed');
5
+ const expires = call ? Math.floor(Date.parse(data.ring_expires_at) / 1000) : Math.floor(now / 1000) + 3600;
6
+ return { call, dismissed, body: call ? (data.kind === 'video' ? 'Incoming video call. Tap to answer.' : 'Incoming call. Tap to answer.') : 'Open the app to read your message.', expires: dismissed ? 0 : expires, ttl: dismissed ? 0 : Math.max(0, Math.min(3600, expires - Math.floor(now / 1000))), channel: call ? 'robono-calls' : 'robono-messages' };
7
+ }
3
8
  const b64 = (data) => Buffer.from(JSON.stringify(data)).toString('base64url');
4
9
  function jwt(header, claims, key, algorithm, p1363 = false) {
5
10
  const body = b64(header) + '.' + b64(claims);
6
11
  const signature = sign(algorithm, Buffer.from(body), { key: createPrivateKey(key), ...(p1363 ? { dsaEncoding: 'ieee-p1363' } : {}) });
7
12
  return body + '.' + signature.toString('base64url');
8
13
  }
9
- function collapse(data) { return createHash('sha256').update(data.accountScope + ':' + data.conversationId).digest('hex'); }
14
+ function collapse(data) { return createHash('sha256').update(data.accountScope + ':' + (data.event === 'robono.messaging' ? data.conversationId : data.call_id)).digest('hex'); }
10
15
  /** Uses only fixed Apple/Google endpoints. Private keys never enter notification payloads. */
11
16
  export function createMessagingPushSender(options) {
12
17
  const title = options.title?.trim() || 'New message';
@@ -51,7 +56,10 @@ export function createMessagingPushSender(options) {
51
56
  return { accepted: false, invalidDevice: true, code: 'invalid_token' };
52
57
  if (appleToken.expires <= Date.now())
53
58
  appleToken = { value: jwt({ alg: 'ES256', kid: apple.keyId }, { iss: apple.teamId, iat: Math.floor(Date.now() / 1000) }, apple.privateKey, 'sha256', true), expires: Date.now() + 45 * 60000 };
54
- const payload = JSON.stringify({ aps: { alert: { title, body: 'Open the app to read your message.' }, sound: 'default', 'thread-id': collapse(data) }, body: data });
59
+ const p = notificationPresentation(data);
60
+ if (p.call && !p.dismissed && p.ttl <= 0)
61
+ return { accepted: false, retryable: false, code: 'call_expired' };
62
+ const payload = JSON.stringify({ aps: p.dismissed ? { 'content-available': 1 } : { alert: { title: p.call ? 'Incoming call' : title, body: p.body }, sound: 'default', 'thread-id': collapse(data) }, body: data });
55
63
  return new Promise(resolve => {
56
64
  const session = connect(apple.sandbox ? 'https://api.sandbox.push.apple.com' : 'https://api.push.apple.com');
57
65
  let finished = false;
@@ -59,7 +67,7 @@ export function createMessagingPushSender(options) {
59
67
  return; finished = true; clearTimeout(timer); session.destroy(); resolve(result); };
60
68
  const timer = setTimeout(() => finish({ accepted: false, retryable: true, code: 'apple_timeout' }), 15000);
61
69
  session.on('error', () => finish({ accepted: false, retryable: true, code: 'apple_connection_failed' }));
62
- const stream = session.request({ ':method': 'POST', ':path': '/3/device/' + device.token, authorization: 'bearer ' + appleToken.value, 'apns-topic': apple.bundleId, 'apns-push-type': 'alert', 'apns-priority': '10', 'apns-expiration': String(Math.floor(Date.now() / 1000) + 3600), 'apns-collapse-id': collapse(data), 'content-type': 'application/json' });
70
+ const stream = session.request({ ':method': 'POST', ':path': '/3/device/' + device.token, authorization: 'bearer ' + appleToken.value, 'apns-topic': apple.bundleId, 'apns-push-type': p.dismissed ? 'background' : 'alert', 'apns-priority': p.dismissed ? '5' : '10', 'apns-expiration': String(p.expires), 'apns-collapse-id': collapse(data), 'content-type': 'application/json' });
63
71
  let status = 0, body = '';
64
72
  stream.setEncoding('utf8');
65
73
  stream.on('response', headers => { status = Number(headers[':status']); });
@@ -82,10 +90,13 @@ export function createMessagingPushSender(options) {
82
90
  async function sendGoogle(device, data) {
83
91
  if (!google)
84
92
  return { accepted: false, retryable: false, code: 'google_credentials_missing' };
93
+ const p = notificationPresentation(data);
94
+ if (p.call && !p.dismissed && p.ttl <= 0)
95
+ return { accepted: false, retryable: false, code: 'call_expired' };
85
96
  const response = await request('https://fcm.googleapis.com/v1/projects/' + encodeURIComponent(google.projectId) + '/messages:send', {
86
97
  method: 'POST', redirect: 'error', signal: AbortSignal.timeout(15000), headers: { authorization: 'Bearer ' + await googleAccess(), 'content-type': 'application/json' },
87
- body: JSON.stringify({ message: { token: device.token, notification: { title, body: 'Open the app to read your message.' }, data,
88
- android: { priority: 'high', ttl: '3600s', collapse_key: collapse(data), notification: { tag: collapse(data), channel_id: 'robono-messages' } } } }),
98
+ body: JSON.stringify({ message: { token: device.token, ...(!p.dismissed ? { notification: { title: p.call ? 'Incoming call' : title, body: p.body } } : {}), data,
99
+ android: { priority: 'high', ttl: p.ttl + 's', collapse_key: collapse(data), ...(!p.dismissed ? { notification: { tag: collapse(data), channel_id: p.channel } } : {}) } } }),
89
100
  });
90
101
  const result = await response.json().catch(() => null);
91
102
  if (response.status === 401)
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-notification-providers.js","sourceRoot":"","sources":["../src/messaging-notification-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging-notification-providers.js","sourceRoot":"","sources":["../src/messaging-notification-providers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-push-worker.d.ts","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,QAgCrC,CAAC"}
1
+ {"version":3,"file":"messaging-push-worker.d.ts","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,QAoDrC,CAAC"}
@@ -8,6 +8,19 @@ const store=async(value,write=false)=>new Promise((resolve,reject)=>{
8
8
  request.onsuccess=()=>{const db=request.result,tx=db.transaction('state',write?'readwrite':'readonly'),s=tx.objectStore('state');
9
9
  const r=write?s.put(value,'account'):s.get('account');let result;r.onsuccess=()=>{result=r.result;};tx.oncomplete=()=>{db.close();resolve(result);};tx.onerror=()=>{db.close();reject(Error('Notification storage unavailable'));};};
10
10
  });
11
+ // Keep dismissal ordering across worker restarts. Provider delivery order is not guaranteed.
12
+ const callOrder=async(d)=>new Promise((resolve,reject)=>{
13
+ const request=indexedDB.open('robono-notifications',1);
14
+ request.onupgradeneeded=()=>request.result.createObjectStore('state');
15
+ request.onerror=()=>reject(Error('Notification storage unavailable'));
16
+ request.onsuccess=()=>{const db=request.result,tx=db.transaction('state','readwrite'),s=tx.objectStore('state'),read=s.get('calls');let allowed=false;
17
+ read.onsuccess=()=>{const rows=(Array.isArray(read.result)?read.result:[]).filter(r=>r.until>Date.now()),key=d.accountScope+':'+d.call_id,previous=rows.find(r=>r.key===key),sequence=d.event.endsWith('dismissed')?2:1;
18
+ allowed=!previous||sequence>previous.sequence;
19
+ if(allowed)s.put([...rows.filter(r=>r.key!==key),{key,sequence,until:Date.parse(d.ring_expires_at)+600000}].slice(-128),'calls');
20
+ };
21
+ tx.oncomplete=()=>{db.close();resolve(allowed);};tx.onerror=()=>{db.close();reject(Error('Notification storage unavailable'));};
22
+ };
23
+ });
11
24
  self.addEventListener('install',()=>self.skipWaiting());
12
25
  self.addEventListener('activate',event=>event.waitUntil(self.clients.claim()));
13
26
  self.addEventListener('message',event=>{
@@ -19,9 +32,16 @@ self.addEventListener('message',event=>{
19
32
  self.addEventListener('push',event=>event.waitUntil((async()=>{
20
33
  let payload;try{payload=event.data.json();}catch{return;}
21
34
  const d=payload.data,account=await store();
22
- if(!account||d?.event!=='robono.messaging'||d.accountScope!==account||!/^\d+$/.test(d.messageId)||!/^[a-f0-9-]{36}$/.test(d.conversationId))return;
35
+ if(!account||d?.accountScope!==account)return;
36
+ const call=['calling.incoming','calling.dismissed','calling.group_incoming','calling.group_dismissed'].includes(d.event);
37
+ if(call){
38
+ if(!/^[a-f0-9-]{36}$/.test(d.call_id)||!Number.isFinite(Date.parse(d.ring_expires_at)))return;
39
+ const tag=account+':call:'+d.call_id;
40
+ if(!await callOrder(d))return;
41
+ if(d.event.endsWith('dismissed')||Date.parse(d.ring_expires_at)<=Date.now()){for(const n of await self.registration.getNotifications({tag}))n.close();return;}
42
+ }else if(d.event!=='robono.messaging'||!/^\d+$/.test(d.messageId)||!/^[a-f0-9-]{36}$/.test(d.conversationId))return;
23
43
  const target=new URL(payload.url);if(target.origin!==self.location.origin)return;
24
- await self.registration.showNotification(String(payload.title||'New message').slice(0,80),{body:'Open the app to read your message.',tag:account+':'+d.conversationId,data:{event:d,url:target.href}});
44
+ await self.registration.showNotification(String(payload.title||'New message').slice(0,80),{body:call?(d.kind==='video'?'Incoming video call. Tap to answer.':'Incoming call. Tap to answer.'):'Open the app to read your message.',tag:account+':'+(call?'call:'+d.call_id:d.conversationId),data:{event:d,url:target.href}});
25
45
  })()));
26
46
  self.addEventListener('notificationclick',event=>{event.notification.close();event.waitUntil((async()=>{
27
47
  const data=event.notification.data;if(data?.event?.accountScope!==await store())return;
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-push-worker.js","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgChD,CAAC"}
1
+ {"version":3,"file":"messaging-push-worker.js","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDhD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { MessengerAccess } from './messenger.js';
2
+ export interface MessengerCallingOptions {
3
+ apiKey: string;
4
+ authenticate: (request: Request) => Promise<string | null>;
5
+ authorize: (access: MessengerAccess) => Promise<boolean>;
6
+ admissionUrl?: string;
7
+ serviceUrl?: string;
8
+ connectionsUrl?: string;
9
+ fetch?: typeof fetch;
10
+ }
11
+ /** One authenticated host route. Call media remains peer-to-peer; only controls
12
+ * and authorized state pass through this adapter. Never returns a control token. */
13
+ export declare function createMessengerCallingAdapter(options: MessengerCallingOptions): (request: Request) => Promise<Response>;
14
+ //# sourceMappingURL=messenger-calling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger-calling.d.ts","sourceRoot":"","sources":["../src/messenger-calling.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AACpD,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,CAAC,OAAO,EAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAC,CAAC,MAAM,EAAC,eAAe,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,YAAY,CAAC,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAC;IAAA,cAAc,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAC;CACnF;AAGD;oFACoF;AACpF,wBAAgB,6BAA6B,CAAC,OAAO,EAAC,uBAAuB,IAK/D,SAAQ,OAAO,KAAE,OAAO,CAAC,QAAQ,CAAC,CAiG/C"}
@@ -0,0 +1,173 @@
1
+ import { RobonoCallingBackend } from './calling.js';
2
+ import { RobonoMessengerConnections } from './messenger-connections.js';
3
+ import { createCallingSessionHandles } from './calling-session-handle.js';
4
+ import { RobonoError } from './errors.js';
5
+ const operations = new Set(['setup', 'session', 'availability', 'state', 'start', 'answer', 'candidate', 'connected', 'hold', 'sharing', 'end', 'failed', 'ice', 'close', 'history', 'unanswered', 'telemetry', 'client-info', 'groups/state', 'groups/availability', 'groups/start', 'groups/join', 'groups/leave', 'groups/description', 'groups/candidate', 'groups/connected', 'groups/hold', 'groups/sharing', 'groups/failed', 'groups/ice']);
6
+ const conversationId = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
7
+ /** One authenticated host route. Call media remains peer-to-peer; only controls
8
+ * and authorized state pass through this adapter. Never returns a control token. */
9
+ export function createMessengerCallingAdapter(options) {
10
+ const serviceUrl = (options.serviceUrl ?? 'https://transcode.robono.com/calling/v1').replace(/\/$/, '');
11
+ const backend = new RobonoCallingBackend({ apiKey: options.apiKey, serviceUrl, admissionUrl: options.admissionUrl ?? 'https://api.robono.com/v1/calling', ...(options.fetch ? { fetch: options.fetch } : {}) });
12
+ const connections = new RobonoMessengerConnections({ apiKey: options.apiKey, ...(options.connectionsUrl ? { baseUrl: options.connectionsUrl } : {}), ...(options.fetch ? { fetch: options.fetch } : {}) });
13
+ const handles = createCallingSessionHandles(options.apiKey, serviceUrl);
14
+ return async (request) => {
15
+ const reply = (body, status = 200) => Response.json(body, { status, headers: { 'cache-control': 'no-store' } });
16
+ const fail = (code, status = 403) => { throw Object.assign(Error(code), { status }); };
17
+ try {
18
+ const actorId = await options.authenticate(request);
19
+ if (!actorId)
20
+ return reply({ error: 'authentication_required' }, 401);
21
+ const raw = await request.text();
22
+ if (raw.length > 262144)
23
+ return reply({ error: 'request_too_large' }, 413);
24
+ let body;
25
+ try {
26
+ body = JSON.parse(raw);
27
+ if (!body || typeof body !== 'object' || Array.isArray(body))
28
+ throw Error();
29
+ }
30
+ catch {
31
+ return reply({ error: 'invalid_calling_request' }, 422);
32
+ }
33
+ const operation = String(body.operation);
34
+ if (!operations.has(operation))
35
+ return reply({ error: 'operation_not_allowed' }, 403);
36
+ const input = body.input === undefined ? {} : body.input;
37
+ if (!input || typeof input !== 'object' || Array.isArray(input))
38
+ return reply({ error: 'invalid_calling_request' }, 422);
39
+ const authorize = async (context) => {
40
+ if (await options.authenticate(request) !== actorId)
41
+ fail('authentication_required', 401);
42
+ return options.authorize({ actorId, operation: 'calling.' + operation, input, request, ...(context ? { conversationId: context.conversationId } : {}) });
43
+ };
44
+ if (operation === 'setup' || operation === 'session') {
45
+ if (!await authorize())
46
+ fail('operation_not_allowed');
47
+ const appearance = await backend.appearance();
48
+ if (operation === 'setup')
49
+ return reply(appearance);
50
+ if (appearance.features && !appearance.features.voice && !appearance.features.video)
51
+ return reply({ ...appearance, disabled: true });
52
+ const session = await backend.createSession(actorId);
53
+ // Older services lack the separate hint credential: fail closed, never
54
+ // fall back to giving the embedded client a full control credential.
55
+ if (!session.eventsToken || !await authorize()) {
56
+ await (options.fetch ?? fetch)(serviceUrl + '/close', { method: 'POST', headers: { authorization: 'Bearer ' + session.token, 'content-type': 'application/json' }, body: '{}', signal: AbortSignal.timeout(4500), redirect: 'error' }).catch(() => { });
57
+ fail(session.eventsToken ? 'operation_not_allowed' : 'calling_service_update_required', session.eventsToken ? 403 : 503);
58
+ }
59
+ return reply({ handle: handles.seal(actorId, session), eventsToken: session.eventsToken, serviceUrl, expiresAt: session.expiresAt, ...appearance });
60
+ }
61
+ const session = handles.open(body.handle, actorId);
62
+ const remote = async (op, payload = {}) => {
63
+ const response = await (options.fetch ?? fetch)(serviceUrl + '/' + op, { method: 'POST', redirect: 'error', signal: AbortSignal.any([request.signal, AbortSignal.timeout(7500)]), headers: { authorization: 'Bearer ' + session.token, 'content-type': 'application/json' }, body: JSON.stringify(payload) });
64
+ const value = await response.json().catch(() => null);
65
+ if (!response.ok)
66
+ fail(typeof value?.error === 'string' ? value.error : 'calling_unavailable', response.status);
67
+ if (!value || typeof value !== 'object')
68
+ fail('calling_unavailable', 503);
69
+ return value;
70
+ };
71
+ // A signed-in owner may always release their own encrypted session.
72
+ if (operation === 'close')
73
+ return reply(await remote('close'));
74
+ const resolved = new Map();
75
+ const context = (id) => {
76
+ if (typeof id !== 'string' || id.length > 100)
77
+ fail('calling_conversation_unavailable', 404);
78
+ const key = id;
79
+ let value = resolved.get(key);
80
+ if (!value) {
81
+ value = connections.callingContext(actorId, conversationId.test(key) ? { conversationId: key } : { connectionId: key });
82
+ resolved.set(key, value);
83
+ }
84
+ return value;
85
+ };
86
+ const permitted = async (id) => { const c = await context(id); if (!await authorize(c))
87
+ fail('operation_not_allowed'); return c; };
88
+ const isGroup = operation.startsWith('groups/'), action = operation.replace(/^groups\//, '');
89
+ if (action === 'state') {
90
+ const state = await remote(operation, input), call = state.call;
91
+ if (!call) {
92
+ if (!await authorize())
93
+ fail('operation_not_allowed');
94
+ return reply(state);
95
+ }
96
+ try {
97
+ const c = await permitted(call.connectionId);
98
+ return reply({ ...state, call: { ...call, connectionId: c.conversationId } });
99
+ }
100
+ catch (error) {
101
+ if (error instanceof RobonoError && ![401, 403, 404, 410].includes(error.status ?? 0))
102
+ throw error;
103
+ if (!(error instanceof RobonoError) && ![401, 403, 404, 410].includes(Number(error.status)))
104
+ throw error;
105
+ if (call.controlled)
106
+ await remote(isGroup ? 'groups/leave' : 'end', { callId: call.id }).catch(() => { });
107
+ if (Number(error.status) === 401)
108
+ throw error;
109
+ return reply({ version: state.version, voiceAvailable: false, videoAvailable: false, call: null });
110
+ }
111
+ }
112
+ if (action === 'history') {
113
+ if (!await authorize())
114
+ fail('operation_not_allowed');
115
+ const filter = input.connectionId === undefined ? undefined : await permitted(input.connectionId);
116
+ const page = await remote(operation, { ...input, ...(filter ? { connectionId: filter.connectionId } : {}) });
117
+ const entries = [];
118
+ for (const entry of (Array.isArray(page.entries) ? page.entries : []).slice(0, 100)) {
119
+ try {
120
+ const c = await permitted(entry.connectionId);
121
+ entries.push({ ...entry, connectionId: c.conversationId });
122
+ }
123
+ catch (error) {
124
+ if (![401, 403, 404, 410].includes(Number(error.status)))
125
+ throw error;
126
+ }
127
+ }
128
+ if (await options.authenticate(request) !== actorId)
129
+ fail('authentication_required', 401);
130
+ return reply({ ...page, entries });
131
+ }
132
+ if (operation === 'client-info') {
133
+ if (!await authorize())
134
+ fail('operation_not_allowed');
135
+ return reply(await remote(operation, input));
136
+ }
137
+ let c;
138
+ if (['start', 'availability'].includes(action) || action === 'ice' && input.callId === undefined) {
139
+ c = await permitted(input.connectionId);
140
+ }
141
+ else {
142
+ // Never authorize an action against a client-claimed conversation while
143
+ // executing it on a different callId. Read the actual call first.
144
+ let state = await remote(operation === 'unanswered' ? 'unanswered' : isGroup ? 'groups/state' : 'state', operation === 'unanswered' ? { callId: input.callId } : { mediaKinds: ['voice', 'video'] });
145
+ if (operation === 'telemetry' && state.call?.id !== input.callId)
146
+ state = await remote('groups/state', { mediaKinds: ['voice', 'video'] });
147
+ const call = operation === 'unanswered' ? state : state.call;
148
+ if (!call || call.id !== input.callId && call.callId !== input.callId)
149
+ fail('call_not_found', 404);
150
+ c = await permitted(call.connectionId);
151
+ if (operation === 'unanswered')
152
+ return reply({ ...state, connectionId: c.conversationId });
153
+ }
154
+ if ((c.kind === 'group') !== isGroup && operation !== 'telemetry')
155
+ fail('invalid_call_kind', 422);
156
+ const result = await remote(operation, { ...input, connectionId: c.connectionId });
157
+ if (!await authorize(c)) {
158
+ const call = result.call ?? result;
159
+ if (call.controlled && call.id)
160
+ await remote(isGroup ? 'groups/leave' : 'end', { callId: call.id }).catch(() => { });
161
+ fail('operation_not_allowed');
162
+ }
163
+ return reply({ ...result, ...(result.connectionId ? { connectionId: c.conversationId } : {}), ...(result.call ? { call: { ...result.call, connectionId: c.conversationId } } : {}) });
164
+ }
165
+ catch (error) {
166
+ if (error instanceof RobonoError)
167
+ return reply({ error: error.code }, error.status ?? 503);
168
+ const status = Number(error.status);
169
+ return reply({ error: status >= 400 && status < 500 ? error.message : 'calling_unavailable' }, status >= 400 && status < 600 ? status : 503);
170
+ }
171
+ };
172
+ }
173
+ //# sourceMappingURL=messenger-calling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger-calling.js","sourceRoot":"","sources":["../src/messenger-calling.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-check.d.ts","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAAE,IAAI,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,QAAQ,GAAC,QAAQ,GAAC,cAAc,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC;AACxG,kGAAkG;AAClG,wBAAsB,yBAAyB,CAAC,OAAO,EAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;CAAC,GAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAe7J"}
1
+ {"version":3,"file":"messenger-check.d.ts","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAAE,IAAI,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,QAAQ,GAAC,QAAQ,GAAC,cAAc,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC;AACxG,kGAAkG;AAClG,wBAAsB,yBAAyB,CAAC,OAAO,EAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;CAAC,GAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiB7J"}
@@ -18,8 +18,10 @@ export async function checkRobonoMessengerSetup(options) {
18
18
  await run('Signed-in messaging', async () => { const r = await post({ operation: 'settings' }), d = await r.json(); return { status: r.ok && d.settings ? 'passed' : 'failed', detail: r.ok && d.settings ? 'The test user can load messaging settings.' : 'Connect the test user’s sign-in and current messaging permission.' }; });
19
19
  await run('Contacts and conversations', async () => { const r = await post({ operation: 'conversations' }), d = await r.json(); const rows = d.conversations; return { status: !r.ok || !Array.isArray(rows) ? 'failed' : rows.length ? 'passed' : 'needs-action', detail: !r.ok || !Array.isArray(rows) ? 'The signed-in user cannot load chats.' : rows.length ? 'Authorized chats are available.' : 'Connect a second test user and synchronize their permitted relationship.' }; });
20
20
  await run('Server-only operations', async () => { const r = await post({ operation: 'erase-user', userId: 'robono-check-never-delete' }); return { status: r.status === 403 ? 'passed' : 'failed', detail: r.status === 403 ? 'Account deletion is blocked from the public chat route.' : 'The browser route must reject server-only account operations.' }; });
21
- await run('Notification connection', async () => { const r = await post({ operation: 'notification-status' }, true, options.origin, 'notifications'), d = await r.json(); return { status: !r.ok || !Array.isArray(d.providers) ? 'failed' : d.providers.length ? 'passed' : 'needs-action', detail: !r.ok ? 'Update the server package and enable managed notifications.' : d.providers?.length ? 'Connected providers: ' + d.providers.filter((name) => ['apple', 'google', 'web'].includes(String(name))).join(', ') + '. A real background alert still needs testing.' : 'Connect website, Apple or Google settings in Your app → Message notifications.' }; });
21
+ await run('Notification connection', async () => { const r = await post({ operation: 'notification-status' }, true, options.origin, 'notifications'), d = await r.json(); return { status: !r.ok || !Array.isArray(d.providers) ? 'failed' : d.providers.length ? 'passed' : 'needs-action', detail: !r.ok ? 'Update the server package and enable managed notifications.' : d.providers?.length ? 'Connected providers: ' + d.providers.filter((name) => ['apns', 'fcm', 'web', 'apple', 'google'].includes(String(name))).join(', ') + '. A real background alert still needs testing.' : 'Connect website, Apple or Google settings in Your app → Message notifications.' }; });
22
22
  await run('Browser notification helper', async () => { const u = new URL(url); u.searchParams.set('service', 'push-worker'); const r = await request(u, { redirect: 'error', signal: AbortSignal.timeout(15000) }); const ok = r.ok && r.headers.get('content-type')?.includes('javascript') && r.headers.get('service-worker-allowed') === '/robono-notifications/'; return { status: ok ? 'passed' : 'needs-action', detail: ok ? 'Your route serves the browser helper without replacing an existing worker.' : 'For browser alerts, mount GET as well as POST on the combined route.' }; });
23
+ await run('Call configuration', async () => { const r = await post({ operation: 'setup' }, true, options.origin, 'calling'), d = await r.json(); return { status: r.ok && d.features ? 'passed' : 'failed', detail: r.ok && d.features ? (d.features.voice || d.features.video ? 'The supplied call screens can read the selected voice/video options. A real call still needs testing.' : 'Calling is not selected for this project.') : 'Connect calling permissions on the combined route and update the server package.' }; });
24
+ await run('Maps connection', async () => { const r = await post({ operation: 'settings' }, true, options.origin, 'location'), d = await r.json(); return { status: r.ok && d.settings ? 'passed' : 'failed', detail: r.ok && d.settings ? (d.settings.enabled ? 'Maps settings load through the same signed-in route. Register the website or both phone app IDs in Maps setup before opening real maps.' : 'Maps is not selected for this project.') : 'Connect location permissions on the combined route and update the server package.' }; });
23
25
  return checks;
24
26
  }
25
27
  //# sourceMappingURL=messenger-check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-check.js","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messenger-check.js","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-connected-templates.d.ts","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAAC,QAAQ,GAAC,UAAU,GAAC,UAAU,CAAC;AACjE,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,OAAO,EAAC,uBAAuB,0BAoIlG"}
1
+ {"version":3,"file":"messenger-connected-templates.d.ts","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAAC,QAAQ,GAAC,UAAU,GAAC,UAAU,CAAC;AACjE,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,OAAO,EAAC,uBAAuB,0BAuIlG"}
@@ -28,6 +28,9 @@ return verify(request);
28
28
  }`;
29
29
  files['server/robono-access.ts'] = `import type {MessengerAccess} from '@robono/server';\n${setup}\n\n// Keep YOUR current eligibility, suspension and membership checks here.
30
30
  // Signing in does not grant permission to every conversation.
31
+ // Account-level settings and calling.session/calling.setup have no conversation ID.
32
+ // Chat calls, media and extras need their own current permissions; location uses
33
+ // directed viewer grants. Do not treat every operation as sending a text.
31
34
  export async function authorize(access:MessengerAccess):Promise<boolean>{
32
35
  throw Error('Connect your existing messaging permission check in robono-access.ts');
33
36
  }
@@ -56,11 +59,11 @@ export function RobonoChat({userId,getAccessToken,contacts,onReady,onSignOut}:{u
56
59
  import {createExpoMessenger,ExpoMessenger,type ExpoMessengerProps} from '@robono/messaging-react-native/expo';
57
60
  type Connection=ReturnType<typeof createExpoMessenger>;
58
61
  export function RobonoChat({userId,getAccessToken,contacts,isCallActive,onReady,onSignOut}:{userId:string;getAccessToken:()=>Promise<string>;contacts?:ExpoMessengerProps['contacts'];isCallActive?:()=>boolean;onSignOut?:()=>Promise<void>;onReady?:(connection:Connection|null)=>void}){
59
- const latest=useRef({userId,getAccessToken,isCallActive,onReady});latest.current={userId,getAccessToken,isCallActive,onReady};
62
+ const latest=useRef({userId,getAccessToken,isCallActive,onReady,contacts});latest.current={userId,getAccessToken,isCallActive,onReady,contacts};
60
63
  const [active,setActive]=useState<{userId:string;connection:Connection}|null>(null);
61
64
  useEffect(()=>{
62
65
  const token=async()=>{if(latest.current.userId!==userId)throw Error('Account changed.');const value=await latest.current.getAccessToken();if(latest.current.userId!==userId)throw Error('Account changed.');return value;};
63
- const connection=createExpoMessenger({endpoint:${q(options.origin + '/api/robono')},userId,getAccessToken:token,isCallActive:()=>latest.current.isCallActive?.()??false});
66
+ const connection=createExpoMessenger({endpoint:${q(options.origin + '/api/robono')},userId,getAccessToken:token,people:()=>latest.current.contacts??{},isCallActive:()=>latest.current.isCallActive?.()??false});
64
67
  setActive({userId,connection});latest.current.onReady?.(connection);
65
68
  return()=>{latest.current.onReady?.(null);connection.dispose();};
66
69
  },[userId]);
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-connected-templates.js","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAE7E,MAAM,UAAU,uBAAuB,CAAC,KAA2B,EAAC,OAA+B;IAClG,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,EAAC,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,EAAC,CAAC,GAAC,IAAI,CAAC,SAAS,CAAC;IACpF,IAAG,CAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAC,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpH,IAAG,QAAQ,KAAG,QAAQ,EAAC,CAAC;QACvB,MAAM,KAAK,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA;;;;;;;;;;;EAWlC,CAAA,CAAC,CAAA;;;;;;;;;;EAUD,CAAC;QACD,KAAK,CAAC,yBAAyB,CAAC,GAAC,yDAAyD,KAAK;;;;;CAKhG,CAAC;QACA,KAAK,CAAC,cAAc,CAAC,IAAE,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4MAA4M,CAAA,CAAC,CAAA,8HAA8H,CAAC;IAC1X,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,GAAC,GAAG,CAAA,CAAC,CAAA;;;;;;;;;;;wFAWoD,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;;;;;;;CAO7G,CAAA,CAAC,CAAA;;;;;;;;mDAQiD,CAAC,CAAC,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC;;;;;6EAKL,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;;CAElG,CAAC;IACD,KAAK,CAAC,gCAAgC,CAAC,GAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxC,CAAC;IACD,IAAG,QAAQ,KAAG,UAAU;QAAC,KAAK,CAAC,2BAA2B,CAAC,GAAC;;;;;;;;;;;;;;;;CAgB5D,CAAC;IACD,IAAG,QAAQ,KAAG,UAAU;QAAC,KAAK,CAAC,2BAA2B,CAAC,GAAC;;;;;;;;;;CAU5D,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,IAAE,4BAA4B,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,2FAA2F,CAAA,CAAC,CAAA,kDAAkD,GAAC,CAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,iBAAiB,CAAA,CAAC,CAAA,wBAAwB,CAAC,GAAC,4CAA4C,+5BAA+5B,CAAC;IACxuC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"messenger-connected-templates.js","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAE7E,MAAM,UAAU,uBAAuB,CAAC,KAA2B,EAAC,OAA+B;IAClG,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,EAAC,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,EAAC,CAAC,GAAC,IAAI,CAAC,SAAS,CAAC;IACpF,IAAG,CAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAC,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpH,IAAG,QAAQ,KAAG,QAAQ,EAAC,CAAC;QACvB,MAAM,KAAK,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA;;;;;;;;;;;EAWlC,CAAA,CAAC,CAAA;;;;;;;;;;EAUD,CAAC;QACD,KAAK,CAAC,yBAAyB,CAAC,GAAC,yDAAyD,KAAK;;;;;;;;CAQhG,CAAC;QACA,KAAK,CAAC,cAAc,CAAC,IAAE,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4MAA4M,CAAA,CAAC,CAAA,8HAA8H,CAAC;IAC1X,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,GAAC,GAAG,CAAA,CAAC,CAAA;;;;;;;;;;;wFAWoD,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;;;;;;;CAO7G,CAAA,CAAC,CAAA;;;;;;;;mDAQiD,CAAC,CAAC,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC;;;;;6EAKL,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;;CAElG,CAAC;IACD,KAAK,CAAC,gCAAgC,CAAC,GAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxC,CAAC;IACD,IAAG,QAAQ,KAAG,UAAU;QAAC,KAAK,CAAC,2BAA2B,CAAC,GAAC;;;;;;;;;;;;;;;;CAgB5D,CAAC;IACD,IAAG,QAAQ,KAAG,UAAU;QAAC,KAAK,CAAC,2BAA2B,CAAC,GAAC;;;;;;;;;;CAU5D,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,IAAE,4BAA4B,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,2FAA2F,CAAA,CAAC,CAAA,kDAAkD,GAAC,CAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,iBAAiB,CAAA,CAAC,CAAA,wBAAwB,CAAC,GAAC,4CAA4C,+5BAA+5B,CAAC;IACxuC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type MessagingBackendOptions } from './messaging.js';
2
+ export interface MessengerContactInput {
3
+ externalUserIds: [string, string];
4
+ /** Permission to communicate through the services selected in Robono. */
5
+ allowed: boolean;
6
+ /** Your persisted contact revision. Identical retries are safe. */
7
+ revision: number;
8
+ /** Optional restrictions for this pair; these never enable a service or paid extra. */
9
+ permissions?: Partial<Record<'calling' | 'video' | 'screenSharing', boolean>>;
10
+ }
11
+ export interface MessengerCallingContext {
12
+ conversationId: string;
13
+ connectionId: string;
14
+ kind: 'direct' | 'group';
15
+ }
16
+ /** Server-only contact synchronization and authoritative calling/chat ID mapping. */
17
+ export declare class RobonoMessengerConnections {
18
+ private backend;
19
+ constructor(options: MessagingBackendOptions);
20
+ synchronizeContact(input: MessengerContactInput): Promise<{
21
+ conversationId: string;
22
+ connectionId: string;
23
+ revision: number;
24
+ }>;
25
+ callingContext(actorId: string, input: {
26
+ conversationId: string;
27
+ } | {
28
+ connectionId: string;
29
+ }): Promise<MessengerCallingContext>;
30
+ }
31
+ //# sourceMappingURL=messenger-connections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger-connections.d.ts","sourceRoot":"","sources":["../src/messenger-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AACnF,MAAM,WAAW,qBAAqB;IACrC,eAAe,EAAC,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAChC,yEAAyE;IACzE,OAAO,EAAC,OAAO,CAAC;IAChB,mEAAmE;IACnE,QAAQ,EAAC,MAAM,CAAC;IAChB,uFAAuF;IACvF,WAAW,CAAC,EAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAC,OAAO,GAAC,eAAe,EAAC,OAAO,CAAC,CAAC,CAAC;CACxE;AACD,MAAM,WAAW,uBAAuB;IAAE,cAAc,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,QAAQ,GAAC,OAAO,CAAA;CAAC;AAC1G,qFAAqF;AACrF,qBAAa,0BAA0B;IACtC,OAAO,CAAC,OAAO,CAAwB;gBAC3B,OAAO,EAAC,uBAAuB;IAC3C,kBAAkB,CAAC,KAAK,EAAC,qBAAqB,GAAE,OAAO,CAAC;QAAC,cAAc,EAAC,MAAM,CAAC;QAAA,YAAY,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAA;KAAC,CAAC;IAI9G,cAAc,CAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAC;QAAC,cAAc,EAAC,MAAM,CAAA;KAAC,GAAC;QAAC,YAAY,EAAC,MAAM,CAAA;KAAC,GAAE,OAAO,CAAC,uBAAuB,CAAC;CAKzH"}
@@ -0,0 +1,18 @@
1
+ import { RobonoMessagingBackend } from './messaging.js';
2
+ /** Server-only contact synchronization and authoritative calling/chat ID mapping. */
3
+ export class RobonoMessengerConnections {
4
+ backend;
5
+ constructor(options) { this.backend = new RobonoMessagingBackend({ ...options, baseUrl: options.baseUrl ?? 'https://api.robono.com/v1/messaging/connect' }); }
6
+ synchronizeContact(input) {
7
+ if (!Array.isArray(input.externalUserIds) || input.externalUserIds.length !== 2 || new Set(input.externalUserIds).size !== 2 || !input.externalUserIds.every(id => typeof id === 'string' && id.length > 0 && id.length <= 200 && id.trim() === id && !/[\u0000-\u001f\u007f]/.test(id)) || typeof input.allowed !== 'boolean' || !Number.isSafeInteger(input.revision) || input.revision < 1 || input.permissions !== undefined && (!input.permissions || typeof input.permissions !== 'object' || Array.isArray(input.permissions) || Object.entries(input.permissions).some(([key, value]) => !['calling', 'video', 'screenSharing'].includes(key) || typeof value !== 'boolean')))
8
+ throw Error('Use two user IDs, the current communication permission and its saved revision.');
9
+ return this.backend.request('contact', input);
10
+ }
11
+ async callingContext(actorId, input) {
12
+ const result = await this.backend.request('calling-context', { actorId, ...input });
13
+ if (typeof result?.conversationId !== 'string' || typeof result?.connectionId !== 'string' || !['direct', 'group'].includes(result.kind))
14
+ throw Error('Invalid calling context.');
15
+ return result;
16
+ }
17
+ }
18
+ //# sourceMappingURL=messenger-connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messenger-connections.js","sourceRoot":"","sources":["../src/messenger-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAA8B,MAAM,gBAAgB,CAAC;AAWnF,qFAAqF;AACrF,MAAM,OAAO,0BAA0B;IAC9B,OAAO,CAAwB;IACvC,YAAY,OAA+B,IAAE,IAAI,CAAC,OAAO,GAAC,IAAI,sBAAsB,CAAC,EAAC,GAAG,OAAO,EAAC,OAAO,EAAC,OAAO,CAAC,OAAO,IAAE,6CAA6C,EAAC,CAAC,CAAC,CAAA,CAAC;IAC3K,kBAAkB,CAAC,KAA2B;QAC7C,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAE,KAAK,CAAC,eAAe,CAAC,MAAM,KAAG,CAAC,IAAE,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,KAAG,CAAC,IAAE,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAA,EAAE,CAAA,OAAO,EAAE,KAAG,QAAQ,IAAE,EAAE,CAAC,MAAM,GAAC,CAAC,IAAE,EAAE,CAAC,MAAM,IAAE,GAAG,IAAE,EAAE,CAAC,IAAI,EAAE,KAAG,EAAE,IAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAE,OAAO,KAAK,CAAC,OAAO,KAAG,SAAS,IAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAE,KAAK,CAAC,QAAQ,GAAC,CAAC,IAAE,KAAK,CAAC,WAAW,KAAG,SAAS,IAAE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAE,OAAO,KAAK,CAAC,WAAW,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAC,KAAK,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,SAAS,EAAC,OAAO,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAE,OAAO,KAAK,KAAG,SAAS,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACtrB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAC,KAA0C,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,OAAc,EAAC,KAAmD;QACtF,MAAM,MAAM,GAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAC,EAAC,OAAO,EAAC,GAAG,KAAK,EAAC,CAAC,CAAC;QAC9E,IAAG,OAAO,MAAM,EAAE,cAAc,KAAG,QAAQ,IAAE,OAAO,MAAM,EAAE,YAAY,KAAG,QAAQ,IAAE,CAAC,CAAC,QAAQ,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACvK,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-customer-templates.d.ts","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CA4GhG"}
1
+ {"version":3,"file":"messenger-customer-templates.d.ts","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CA8GhG"}
@@ -52,6 +52,8 @@ export async function checkMessengerConnection(getAccessToken:()=>Promise<string
52
52
  await run('Signed-in messaging','settings','messages',data=>({status:data.settings?'passed':'failed',detail:data.settings?'Your current account can load messaging settings.':'The route did not return messaging settings.'}));
53
53
  if(!signal.aborted)await run('Conversations','conversations','messages',data=>({status:!Array.isArray(data.conversations)?'failed':data.conversations.length?'passed':'needs-action',detail:!Array.isArray(data.conversations)?'The route did not return conversations.':data.conversations.length?'Your account has available conversations.':'Connect a second test account and synchronize their permitted relationship from your server.'}));
54
54
  if(!signal.aborted)await run('Notifications','notification-status','notifications',data=>({status:!Array.isArray(data.providers)?'failed':data.providers.length?'passed':'needs-action',detail:!Array.isArray(data.providers)?'Check that the server uses the current messaging package.':data.providers.length?'A notification provider is configured. Test an actual background notification next.':'Connect website or Apple/Google notification settings in Robono. Chat can work before alerts are connected.'}));
55
+ if(!signal.aborted)await run('Calling','setup','calling',data=>({status:data.features?'passed':'failed',detail:data.features?(data.features.voice||data.features.video?'The supplied call screens can read your selected calling options.':'Calling is not selected for this project.'):'Update the server package and connect current calling permissions.'}));
56
+ if(!signal.aborted)await run('Maps','settings','location',data=>({status:data.settings?'passed':'failed',detail:data.settings?(data.settings.enabled?'Maps connects through your existing account. Register your website or both phone app IDs before opening real maps.':'Maps is not selected for this project.'):'Update the server package and connect current location permissions.'}));
55
57
  return checks;
56
58
  }
57
59
  `,
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-customer-templates.js","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,0BAA0B,CAAC,OAA+B;IACxE,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,CAAC;IACtC,MAAM,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,CAAC;IACnC,MAAM,IAAI,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,gBAAgB,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,gBAAgB,CAAC;IAChG,MAAM,UAAU,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4DAA4D,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,0CAA0C,CAAA,CAAC,CAAA,4DAA4D,CAAC;IAClO,OAAO;QACL,8BAA8B,EAAC;;;;EAIjC,UAAU;EACV,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;IAExE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM,IAAI,IAAI;;;;qCAIZ,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM;IACtE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,0DAA0D;;oBAEjE,GAAG,CAAA,CAAC,CAAA,sCAAsC,CAAA,CAAC,CAAA,SAAS;;;;CAIvE;QACG,sCAAsC,EAAC;;;mBAGxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAA,CAAC,CAAA,aAAa,CAAA,CAAC,CAAA,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BhF;QACG,2BAA2B,EAAC;;EAE9B,GAAG,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCxD,GAAG,CAAA,CAAC,CAAA;;;;;YAKI,CAAA,CAAC,CAAA;;;;;WAKF;;CAEV;KACE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"messenger-customer-templates.js","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,0BAA0B,CAAC,OAA+B;IACxE,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,CAAC;IACtC,MAAM,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,CAAC;IACnC,MAAM,IAAI,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,gBAAgB,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,gBAAgB,CAAC;IAChG,MAAM,UAAU,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4DAA4D,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,0CAA0C,CAAA,CAAC,CAAA,4DAA4D,CAAC;IAClO,OAAO;QACL,8BAA8B,EAAC;;;;EAIjC,UAAU;EACV,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;IAExE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM,IAAI,IAAI;;;;qCAIZ,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM;IACtE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,0DAA0D;;oBAEjE,GAAG,CAAA,CAAC,CAAA,sCAAsC,CAAA,CAAC,CAAA,SAAS;;;;CAIvE;QACG,sCAAsC,EAAC;;;mBAGxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAA,CAAC,CAAA,aAAa,CAAA,CAAC,CAAA,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhF;QACG,2BAA2B,EAAC;;EAE9B,GAAG,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCxD,GAAG,CAAA,CAAC,CAAA;;;;;YAKI,CAAA,CAAC,CAAA;;;;;WAKF;;CAEV;KACE,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"messenger-init.d.ts","sourceRoot":"","sources":["../src/messenger-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAGtG,MAAM,WAAW,uBAAuB;IAAE,QAAQ,EAAC,KAAK,GAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,GAAC,OAAO,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,IAAI,CAAC,EAAC,qBAAqB,CAAA;CAAC;AACtJ,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAgF3F;AACD,uFAAuF;AACvF,wBAAsB,qBAAqB,CAAC,WAAW,EAAC,MAAM,EAAC,OAAO,EAAC,uBAAuB,qBAc7F"}
1
+ {"version":3,"file":"messenger-init.d.ts","sourceRoot":"","sources":["../src/messenger-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAGtG,MAAM,WAAW,uBAAuB;IAAE,QAAQ,EAAC,KAAK,GAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,GAAC,OAAO,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,IAAI,CAAC,EAAC,qBAAqB,CAAA;CAAC;AACtJ,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAoF3F;AACD,uFAAuF;AACvF,wBAAsB,qBAAqB,CAAC,WAAW,EAAC,MAAM,EAAC,OAAO,EAAC,uBAAuB,qBAc7F"}