@robono/server 0.26.0 → 0.28.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 (74) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/HISTORY-IMPORT.md +104 -5
  3. package/README.md +1 -1
  4. package/SBOM.spdx.json +9 -9
  5. package/dist/calling.d.ts +30 -0
  6. package/dist/calling.d.ts.map +1 -1
  7. package/dist/calling.js +13 -0
  8. package/dist/calling.js.map +1 -1
  9. package/dist/client.d.ts +22 -1
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +17 -3
  12. package/dist/client.js.map +1 -1
  13. package/dist/generated/history-import-interactions.d.ts +17 -0
  14. package/dist/generated/history-import-interactions.d.ts.map +1 -0
  15. package/dist/generated/history-import-interactions.js +40 -0
  16. package/dist/generated/history-import-interactions.js.map +1 -0
  17. package/dist/generated/interactions.d.ts +199 -0
  18. package/dist/generated/interactions.d.ts.map +1 -0
  19. package/dist/generated/interactions.js +89 -0
  20. package/dist/generated/interactions.js.map +1 -0
  21. package/dist/generated/sdk-versions.d.ts +7 -7
  22. package/dist/generated/sdk-versions.d.ts.map +1 -1
  23. package/dist/generated/sdk-versions.js +1 -1
  24. package/dist/generated/sdk-versions.js.map +1 -1
  25. package/dist/history-convert.d.ts +52 -0
  26. package/dist/history-convert.d.ts.map +1 -0
  27. package/dist/history-convert.js +276 -0
  28. package/dist/history-convert.js.map +1 -0
  29. package/dist/history-import-cli.d.ts +1 -7
  30. package/dist/history-import-cli.d.ts.map +1 -1
  31. package/dist/history-import-cli.js +4 -44
  32. package/dist/history-import-cli.js.map +1 -1
  33. package/dist/history-import-validation.d.ts +8 -0
  34. package/dist/history-import-validation.d.ts.map +1 -0
  35. package/dist/history-import-validation.js +85 -0
  36. package/dist/history-import-validation.js.map +1 -0
  37. package/dist/history-import.d.ts +8 -1
  38. package/dist/history-import.d.ts.map +1 -1
  39. package/dist/history-import.js +27 -6
  40. package/dist/history-import.js.map +1 -1
  41. package/dist/history-migrate-cli.d.ts +3 -0
  42. package/dist/history-migrate-cli.d.ts.map +1 -0
  43. package/dist/history-migrate-cli.js +260 -0
  44. package/dist/history-migrate-cli.js.map +1 -0
  45. package/dist/history-polls.d.ts +4 -0
  46. package/dist/history-polls.d.ts.map +1 -0
  47. package/dist/history-polls.js +66 -0
  48. package/dist/history-polls.js.map +1 -0
  49. package/dist/index.d.ts +3 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +1 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/managed-media.d.ts +10 -0
  54. package/dist/managed-media.d.ts.map +1 -1
  55. package/dist/managed-media.js +2 -0
  56. package/dist/managed-media.js.map +1 -1
  57. package/dist/messaging-media.d.ts +16 -0
  58. package/dist/messaging-media.d.ts.map +1 -1
  59. package/dist/messaging-media.js +19 -0
  60. package/dist/messaging-media.js.map +1 -1
  61. package/dist/messaging.d.ts.map +1 -1
  62. package/dist/messaging.js +6 -1
  63. package/dist/messaging.js.map +1 -1
  64. package/dist/messenger-example.json +1 -1
  65. package/dist/messenger-install.d.ts +1 -1
  66. package/dist/push.d.ts.map +1 -1
  67. package/dist/push.js +1 -0
  68. package/dist/push.js.map +1 -1
  69. package/dist/types.d.ts +56 -3
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/webhooks.d.ts.map +1 -1
  72. package/dist/webhooks.js +10 -0
  73. package/dist/webhooks.js.map +1 -1
  74. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-media.d.ts","sourceRoot":"","sources":["../src/messaging-media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging-media.d.ts","sourceRoot":"","sources":["../src/messaging-media.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,25 @@ export function createMessagingMediaBackendAdapter(options) {
67
67
  return respond(planUrl(plan));
68
68
  }
69
69
  }
70
+ // Managed storage performs these checks itself. Combining them avoids a
71
+ // separate history read for each upload stage without weakening custom stores.
72
+ if (operation === 'prepare' && options.storage.authorizePrepare) {
73
+ if (!['voice', 'image', 'video', 'document'].includes(input.kind))
74
+ return respond({ error: { code: 'invalid_media_request' } }, 422);
75
+ const plan = await options.storage.authorizePrepare({ actorId, uploadId: uploadId, conversationId: conversationId, kind: input.kind, file: object(input.file) });
76
+ if ('media' in plan) {
77
+ id(plan.media.assetId);
78
+ return respond(plan);
79
+ }
80
+ return respond(planUrl(plan));
81
+ }
82
+ if (operation === 'complete' && options.storage.authorizeComplete) {
83
+ const result = await options.storage.authorizeComplete({ actorId, uploadId: uploadId, conversationId: conversationId });
84
+ if (!['voice', 'image', 'video', 'document'].includes(result.kind))
85
+ throw Error('Invalid verified attachment kind');
86
+ id(result.media.assetId);
87
+ return respond({ media: result.media });
88
+ }
70
89
  // Authoritative membership/block checks and the latest policy, before touching storage.
71
90
  const page = await options.robono.request('list', { actorId, conversationId, limit: 1, ...(messageId ? { before: (BigInt(messageId) + 1n).toString() } : {}) });
72
91
  const context = { actorId, uploadId: uploadId, conversationId: conversationId };
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-media.js","sourceRoot":"","sources":["../src/messaging-media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging-media.js","sourceRoot":"","sources":["../src/messaging-media.ts"],"names":[],"mappings":"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"}
@@ -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":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AACD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAC5E,KAAK,EAAC,OAAO,CAAC;IAAC,MAAM,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,GAAC,IAAI,CAAC;IAAC,WAAW,EAAC,MAAM,GAAC,IAAI,CAAC;IAC9E,WAAW,EAAC;QAAC,YAAY,EAAC,OAAO,CAAC;QAAA,YAAY,EAAC,OAAO,CAAC;QAAA,aAAa,EAAC,OAAO,CAAC;QAAA,aAAa,EAAC,OAAO,CAAA;KAAC,CAAC;CACrG;AACD,0FAA0F;AAC1F,qBAAa,sBAAsB;IAErB,OAAO,CAAC,OAAO;IAD3B,OAAO,CAAC,GAAG,CAAS;gBACA,OAAO,EAAE,uBAAuB;IAU9C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,OAAO,CAAC,EAAC;QAAC,MAAM,CAAC,EAAC,WAAW,CAAA;KAAC;IA+BpG,eAAe,CACb,KAAK,EAAE;QACL,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAIH,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAC;QAAC,eAAe,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,OAAO,CAAC;QAAA,UAAU,CAAC,EAAC,OAAO,CAAC;QAAA,OAAO,CAAC,EAAC,MAAM,CAAC;QAAA,UAAU,CAAC,EAAC;YAAC,WAAW,EAAC,MAAM,CAAC;YAAA,YAAY,EAAC,OAAO,CAAC;YAAA,QAAQ,EAAC,OAAO,CAAA;SAAC,GAAC,IAAI,CAAC;QAAA,OAAO,EAAC;YAAC,MAAM,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,OAAO,CAAC;YAAA,QAAQ,CAAC,EAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,UAAU,GAAC,MAAM,GAAC,WAAW,EAAC,OAAO,CAAC,CAAC,CAAA;SAAC,EAAE,CAAA;KAAC;IAG7U,8FAA8F;IAC9F,WAAW,CAAC,MAAM,EAAC,MAAM;IACzB,OAAO,CAAC,MAAM,CAAC,EAAC,MAAM,GAAC,UAAU;IACjC,aAAa,CAAC,KAAK,EAAC;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,UAAU,EAAC,WAAW,GAAC,gBAAgB,GAAC,cAAc,CAAC;QAAA,MAAM,EAAC,MAAM,CAAC;QAAA,UAAU,EAAC,MAAM,CAAA;KAAC;IAC5H,QAAQ;IAGR,8FAA8F;IACxF,SAAS,CAAC,KAAK,EAAC;QAAC,MAAM,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;IAW5E,6GAA6G;IAC7G,SAAS,CAAC,MAAM,EAAE,MAAM;CAGzB;AACD,oGAAoG;AACpG,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,mGAAmG;IACnG,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,KAAK,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC3H,kHAAkH;IAClH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAC;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAC;QAAA,MAAM,EAAC,MAAM,CAAA;KAAC,KAAG,OAAO,CAAC,oBAAoB,GAAC,IAAI,CAAC,CAAC;IACzH,wLAAwL;IACxL,SAAS,EAAE,CACT,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC;KAClB,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,IACe,SAAS,OAAO,uBA4I/B"}
package/dist/messaging.js CHANGED
@@ -109,7 +109,7 @@ export function createMessagingBackendAdapter(options) {
109
109
  const operation = String(body.operation ?? "");
110
110
  if (raw.length > (['send', 'schedule'].includes(operation) && body.custom !== undefined ? 32768 : 20000) && !["group-create", "group-update", "schedule-batch"].includes(operation))
111
111
  return respond({ error: { code: "request_too_large" } }, 413);
112
- if (!["schedule-batch", "schedule", "scheduled", "schedule-update", "schedule-cancel", "settings", "send", "edit", "delete", "consume", "conversation-preferences", "conversation-delete", "send-call-message", "call-message-options", "list", "search", "social-preview", "conversations", "seen", "presence-update", "availability", "availability-update", "wait", "group-members", "group-create", "group-update", "group-leave", "room-list", "room-join", "room-moderate", "room-members", "room-remove", "read", "react", "pin", "vote", "close-poll", "inventory", "safety", "block", "unblock", "report"].includes(operation))
112
+ if (!["schedule-batch", "schedule", "scheduled", "schedule-update", "schedule-cancel", "settings", "send", "retry-delivery", "edit", "delete", "consume", "conversation-preferences", "conversation-delete", "send-call-message", "call-message-options", "list", "search", "social-preview", "conversations", "seen", "presence-update", "availability", "availability-update", "wait", "group-members", "group-create", "group-update", "group-leave", "room-list", "room-join", "room-moderate", "room-members", "room-remove", "read", "react", "pin", "vote", "close-poll", "inventory", "safety", "block", "unblock", "report"].includes(operation))
113
113
  return respond({ error: { code: "operation_not_allowed" } }, 403);
114
114
  const input = { ...body, actorId };
115
115
  if (['list', 'conversations', 'group-members'].includes(operation)) {
@@ -200,6 +200,11 @@ export function createMessagingBackendAdapter(options) {
200
200
  // Check each preview against that customer's current list permission too.
201
201
  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 })));
202
202
  result.conversations = result.conversations.filter((_row, index) => allowed[index]);
203
+ if (result.selfConversation) {
204
+ const own = result.selfConversation;
205
+ if (typeof own.id !== 'string' || own.contactId !== actorId || !await options.authorize({ actorId, operation: 'list', input: { actorId, conversationId: own.id }, request }))
206
+ delete result.selfConversation;
207
+ }
203
208
  if (input.query !== undefined) {
204
209
  if (result.globalSearchAvailable !== true || !Array.isArray(result.searchResults) || result.searchResults.length > 50)
205
210
  return respond({ error: { code: 'search_unavailable' } }, 503);
@@ -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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"}
@@ -1 +1 @@
1
- {"schema":1,"preview":{"package.json":"{\n \"name\": \"robono-messenger-preview\",\n \"private\": true,\n \"type\": \"module\",\n \"engines\": {\n \"node\": \">=22.12\"\n },\n \"scripts\": {\n \"start\": \"vite --host 127.0.0.1\",\n \"dev\": \"vite --host 127.0.0.1\",\n \"build\": \"tsc --noEmit && vite build\"\n },\n \"dependencies\": {\n \"@robono/messaging\": \"^0.7.0\",\n \"@robono/messaging-web\": \"^0.9.0\",\n \"react\": \"^19.2.3\",\n \"react-dom\": \"^19.2.3\",\n \"@robono/location\": \"^0.4.0\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.2.2\",\n \"@types/react-dom\": \"^19.2.2\",\n \"typescript\": \"^6.0.3\",\n \"vite\": \"^7.3.6\"\n }\n}\n","index.html":"<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Robono website messaging</title></head><body><div id=\"root\"><main style=\"font-family:system-ui;max-width:600px;margin:48px auto;padding:20px\"><h1>Robono website messaging</h1><p id=\"startup-message\">Opening the chat…</p><noscript>Enable JavaScript to use this example.</noscript></main></div><script>if(location.protocol==='file:')document.getElementById('startup-message').textContent='Start this example with npm start in its folder, then open http://127.0.0.1:5188 in your browser. Opening this file directly cannot connect the chat.';window.addEventListener('error',function(){var message=document.getElementById('startup-message');if(message&&location.protocol!=='file:')message.textContent='The chat could not start. Check that npm start is still running, then refresh this page.';},true);</script><script type=\"module\" src=\"/src/main.tsx\"></script></body></html>\n","tsconfig.json":"{\n \"compilerOptions\": {\n \"target\": \"ES2022\", \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\", \"moduleResolution\": \"Bundler\", \"jsx\": \"react-jsx\",\n \"strict\": true, \"skipLibCheck\": true, \"esModuleInterop\": true,\n \"noEmit\": true, \"types\": [\"vite/client\"]\n },\n \"include\": [\"src\"]\n}\n","src/main.tsx":"import React from 'react';\nimport {createRoot} from 'react-dom/client';\nimport RobonoPreview from './RobonoPreview';\ncreateRoot(document.getElementById('root')!).render(<RobonoPreview/>);\n","src/RobonoPreview.tsx":"'use client';\nimport React,{useEffect,useRef} from 'react';\nimport {mountRobonoMessenger} from '@robono/messaging-web';\nimport {defaultMessagingSettings} from '@robono/messaging';\nexport default function RobonoPreview(){\n const alice=useRef<HTMLDivElement>(null),bob=useRef<HTMLDivElement>(null);\n useEffect(()=>{\n if(!alice.current||!bob.current)return;\n const settings=defaultMessagingSettings();settings.enabled=true;\n const messages:any[]=[];\n const transport=(userId:string):typeof fetch=>async(_request,init)=>{\n const body=JSON.parse(String(init?.body??'{}')),other=userId==='alice'?'bob':'alice';let result:unknown;\n switch(body.operation){\n case 'settings':result={settings};break;\n case 'conversations':result={appearance:settings.appearance,conversations:[{id:'demo-chat',kind:'direct',contactId:other,lastMessage:messages.at(-1)??null,unreadCount:0,canSend:true}],hasMore:false,nextCursor:null};break;\n case 'list':result={settings,messages:[...messages],hasMore:false,nextCursor:null,conversation:{kind:'direct',canSend:true}};break;\n case 'send':{\n let message=messages.find(m=>m.senderId===userId&&m.clientMessageId===body.clientMessageId);\n if(!message){message={...body,id:String(messages.length+1),senderId:userId,createdAt:new Date().toISOString(),readAt:null};messages.push(message);}\n result={message};break;\n }\n case 'read':for(const m of messages)if(m.senderId!==userId)m.readAt=new Date().toISOString();result={ok:true};break;\n case 'seen':case 'inventory':result={ok:true};break;\n default:return Response.json({error:'This local preview demonstrates text only. Connect your test account to try other features.'},{status:400});\n }\n return Response.json(result);\n };\n const mount=(element:HTMLDivElement,userId:string)=>mountRobonoMessenger(element,{companyName:'Example company',userId,getAccessToken:async()=>'local-preview-only',contacts:{alice:{name:'Alice'},bob:{name:'Bob'}},endpoint:'/local-preview-never-sent',fetch:transport(userId),notifications:false,mediaUrl:false,persistence:false});\n const a=mount(alice.current,'alice'),b=mount(bob.current,'bob');return()=>{a.unmount();b.unmount();};\n },[]);\n return <main style={{padding:16,fontFamily:'system-ui'}}><h1>Try a conversation</h1><p>Local preview · Fictional Alice and Bob · Text stays in this page and disappears on reload. This does not test your live connection.</p><p>Open Bob on the left and Alice on the right, then send a message.</p><div style={{display:'flex',flexWrap:'wrap',gap:16}}><section style={{flex:'1 1 320px'}}><h2>Alice</h2><div ref={alice} style={{height:640}}/></section><section style={{flex:'1 1 320px'}}><h2>Bob</h2><div ref={bob} style={{height:640}}/></section></div></main>;\n}\n","src/vite-env.d.ts":"/// <reference types=\"vite/client\" />\n","README.md":"# Robono Messenger preview\n\nRun `npm start`, then open the printed localhost address. This uses the supplied Messenger with fictional Alice and Bob; it sends no messages to Robono and clears on reload. It demonstrates text and layout, not uploads, calls, Maps or live delivery.\n\nFor a real test connection, generate a separate example with `npx --package @robono/server robono-messenger-example --live`. For your own app, run `npx --package @robono/server robono-messenger-install` inside that app and follow https://robono.com/guides/hosted-messenger.html . Keep your existing login and server-side permissions.\n",".gitignore":"node_modules/\ndist/\n.env\n.env.*.local\n"},"live":{"package.json":"{\n \"name\": \"robono-messaging-web-example\",\n \"private\": true,\n \"type\": \"module\",\n \"engines\": {\n \"node\": \">=22.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env server.mjs\",\n \"build\": \"tsc --noEmit && vite build\",\n \"start\": \"node --env-file-if-exists=.env server.mjs\"\n },\n \"dependencies\": {\n \"@robono/messaging\": \"^0.7.0\",\n \"@robono/messaging-web\": \"^0.9.0\",\n \"@robono/server\": \"^0.26.0\",\n \"react\": \"^19.2.3\",\n \"react-dom\": \"^19.2.3\",\n \"@robono/location\": \"^0.4.0\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.2.2\",\n \"@types/react-dom\": \"^19.2.2\",\n \"typescript\": \"^6.0.3\",\n \"vite\": \"^7.3.6\"\n }\n}\n","server.mjs":"// Local example only. Production hosts supply their own identity/session service.\nimport http from \"node:http\";\nimport { randomBytes, timingSafeEqual } from \"node:crypto\";\nimport { pathToFileURL } from \"node:url\";\nimport * as publishedSdk from \"@robono/server\";\nexport async function startExample({\n apiKey = process.env.ROBONO_API_KEY,\n password = process.env.DEMO_PASSWORD,\n baseUrl = process.env.ROBONO_MESSAGING_URL,\n sessionsUrl,\n connectionsUrl,\n port = Number(process.env.PORT || 5188),\n userPrefix = process.env.DEMO_USER_PREFIX || \"website-demo\",\n robono: provided,\n // Repository development only. Downloaded examples use the published packages.\n workspaceSdk = process.env.ROBONO_WORKSPACE_SDK === '1',\n} = {}) {\n const {RobonoMessagingBackend,RobonoMessengerConnections,createRobonoTokenHandler} = workspaceSdk\n ? await import('../../packages/server/dist/index.js') : publishedSdk;\n if (process.env.NODE_ENV === \"production\")\n throw Error(\n \"The example sign-in is for local development. Use your own production authentication.\",\n );\n if (!password || password.length < 12)\n throw Error(\"Set DEMO_PASSWORD to at least 12 characters.\");\n if (!apiKey)\n throw Error(\"Set your test integration ROBONO_API_KEY.\");\n const robono =\n provided ??\n new RobonoMessagingBackend({ apiKey, ...(baseUrl ? { baseUrl } : {}) });\n const users = { alice: userPrefix + \"-alice\", bob: userPrefix + \"-bob\" };\n const connections=new RobonoMessengerConnections({apiKey,...(connectionsUrl?{baseUrl:connectionsUrl}:{})});\n const relationship = await connections.synchronizeContact({\n externalUserIds: Object.values(users),\n allowed: true,\n revision: 1,\n });\n const group = await robono.setGroup({\n externalGroupId: userPrefix + \"-group\",\n name: \"Website group\",\n ownerId: users.alice,\n revision: 1,\n allowed: true,\n members: Object.values(users).map((userId) => ({ userId, canSend: true })),\n });\n const conversations = [\n { id: relationship.conversationId, name: \"Direct conversation\" },\n { id: group.conversationId, name: \"Website group\" },\n ];\n const sessions = new Map(),\n attempts = new Map();\n const authenticate = async (request) => {\n const token = request.headers\n .get(\"authorization\")\n ?.replace(/^Bearer\\s+/i, \"\");\n const session = sessions.get(token);\n return session && session.expires > Date.now() ? session.userId : null;\n };\n let tokenHandler;\n const { createServer } = await import(\"vite\");\n let vite;\n const server = http.createServer(async (req, res) => {\n const send = (value, status = 200) => {\n res.writeHead(status, {\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-store\",\n });\n res.end(JSON.stringify(value));\n };\n const host = \"127.0.0.1:\" + server.address().port,\n origin = \"http://\" + host;\n if (\n req.headers.host !== host ||\n (req.headers.origin && req.headers.origin !== origin)\n )\n return send({ error: { message: \"Origin not allowed.\" } }, 403);\n if (!req.url?.startsWith(\"/api/\"))\n return vite.middlewares(req, res, () =>\n send({ error: { message: \"Not found.\" } }, 404),\n );\n if (req.method !== \"POST\")\n return send({ error: { message: \"Use POST.\" } }, 405);\n try {\n let raw = \"\";\n for await (const part of req) {\n raw += part;\n if (raw.length > 65536)\n return send({ error: { message: \"Request too large.\" } }, 413);\n }\n const body = JSON.parse(raw || \"{}\");\n if (req.url === \"/api/session\") {\n const address = req.socket.remoteAddress,\n now = Date.now();\n const attempt = attempts.get(address);\n const count =\n attempt && attempt.reset > now\n ? attempt\n : { count: 0, reset: now + 60000 };\n attempts.set(address, count);\n if (++count.count > 10)\n return send({ error: { message: \"Try again in a minute.\" } }, 429);\n const received = Buffer.from(String(body.password ?? \"\")),\n expected = Buffer.from(password);\n if (\n !Object.hasOwn(users, body.user) ||\n received.length !== expected.length ||\n !timingSafeEqual(received, expected)\n )\n return send({ error: { message: \"Sign-in failed.\" } }, 401);\n const token = randomBytes(32).toString(\"base64url\");\n sessions.set(token, {\n userId: users[body.user],\n expires: now + 3600000,\n });\n return send({\n token,\n userId: users[body.user],\n conversations,\n participants: Object.fromEntries(\n Object.entries(users).map(([name, id]) => [\n id,\n { name: name === \"alice\" ? \"Alice\" : \"Bob\" },\n ]),\n ),\n });\n }\n const request = new Request(origin + req.url, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n authorization: req.headers.authorization ?? \"\",\n ...(req.headers.origin?{origin:req.headers.origin}:{}),\n },\n body: raw,\n });\n if (req.url === \"/api/logout\") {\n sessions.delete(req.headers.authorization?.replace(/^Bearer\\s+/i, \"\"));\n return send({ ok: true });\n }\n if(new URL(request.url).pathname!==\"/api/robono-token\")return send({error:{message:\"Not found.\"}},404);\n const response = await tokenHandler(request);\n res.writeHead(response.status, Object.fromEntries(response.headers));\n res.end(await response.text());\n } catch {\n send({ error: { message: \"Request failed.\" } }, 503);\n }\n });\n vite = await createServer({\n root: new URL(\".\", import.meta.url).pathname,\n server: { middlewareMode: true, hmr: {server} },\n appType: \"spa\",\n cacheDir: \"node_modules/.vite-robono-example\",\n resolve: { dedupe: [\"react\", \"react-dom\", \"@robono/messaging\"], ...(workspaceSdk ? {alias:{\n '@robono/location':new URL('../../packages/location/dist/index.js',import.meta.url).pathname,\n '@robono/messaging':new URL('../../packages/messaging/dist/index.js',import.meta.url).pathname,\n '@robono/messaging-web':new URL('../../packages/messaging-web/dist/index.js',import.meta.url).pathname,\n }} : {}) },\n ...(workspaceSdk ? {optimizeDeps:{noDiscovery:true,include:['react','react-dom','react-dom/client','react/jsx-runtime','react/jsx-dev-runtime'],exclude:['@robono/messaging','@robono/messaging-web','@robono/location','make-plural/cardinals']}} : {}),\n });\n await new Promise((resolve) => server.listen(port, \"127.0.0.1\", resolve));\n tokenHandler=createRobonoTokenHandler({apiKey,authenticate,origins:[\"http://127.0.0.1:\"+server.address().port],...(sessionsUrl?{baseUrl:sessionsUrl}:{})});\n return {\n url: \"http://127.0.0.1:\" + server.address().port,\n users,\n conversations,\n async close() {\n await vite.close();\n server.closeAllConnections();\n await new Promise((resolve) => server.close(resolve));\n },\n };\n}\nif (\n process.argv[1] &&\n import.meta.url === pathToFileURL(process.argv[1]).href\n) {\n const app = await startExample();\n console.log(\"Website messaging example: \" + app.url);\n for (const signal of [\"SIGINT\", \"SIGTERM\"])\n process.once(signal, () => void app.close().then(() => process.exit()));\n}\n","index.html":"<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Robono website messaging</title></head><body><div id=\"root\"><main style=\"font-family:system-ui;max-width:600px;margin:48px auto;padding:20px\"><h1>Robono website messaging</h1><p id=\"startup-message\">Opening the chat…</p><noscript>Enable JavaScript to use this example.</noscript></main></div><script>if(location.protocol==='file:')document.getElementById('startup-message').textContent='Start this example with npm start in its folder, then open http://127.0.0.1:5188 in your browser. Opening this file directly cannot connect the chat.';window.addEventListener('error',function(){var message=document.getElementById('startup-message');if(message&&location.protocol!=='file:')message.textContent='The chat could not start. Check that npm start is still running, then refresh this page.';},true);</script><script type=\"module\" src=\"/src/main.tsx\"></script></body></html>\n","tsconfig.json":"{\n \"compilerOptions\": {\n \"target\": \"ES2022\", \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\", \"moduleResolution\": \"Bundler\", \"jsx\": \"react-jsx\",\n \"strict\": true, \"skipLibCheck\": true, \"esModuleInterop\": true,\n \"noEmit\": true, \"types\": [\"vite/client\"]\n },\n \"include\": [\"src\"]\n}\n","src/main.tsx":"import React, { useEffect, useState, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport {mountHostedRobonoMessenger} from \"@robono/messaging-web\";\nimport {hostedRobonoTokenProvider} from \"@robono/messaging\";\nimport \"./style.css\";\ntype Session = {\n token: string;\n userId: string;\n conversations: { id: string; name: string }[];\n participants: Record<string, { name: string }>;\n};\nfunction App() {\n const [session,setSession]=useState<Session|null>(null),[error,setError]=useState(''),[busy,setBusy]=useState(false),[attempt,setAttempt]=useState(0);\n const host=useRef<HTMLDivElement>(null),messenger=useRef<Awaited<ReturnType<typeof mountHostedRobonoMessenger>>|null>(null);\n useEffect(()=>{\n if(!session||!host.current)return;\n const controller=new AbortController();let mounted:Awaited<ReturnType<typeof mountHostedRobonoMessenger>>|undefined;setError('');\n void mountHostedRobonoMessenger(host.current,{\n userId:session.userId,signal:controller.signal,\n tokenProvider:hostedRobonoTokenProvider({tokenEndpoint:'/api/robono-token',getAccessToken:async()=>session.token}),\n companyName:'Example company',contacts:session.participants,participants:session.participants,\n account:{name:session.participants[session.userId]?.name??'Example account'},style:{height:'min(700px,75dvh)'},\n }).then(value=>{if(controller.signal.aborted){void value.signOut().catch(()=>{});return;}mounted=value;messenger.current=value;}).catch(()=>{if(!controller.signal.aborted)setError('Could not connect to messaging. Check your sign-in connection.');});\n return()=>{controller.abort();if(messenger.current===mounted)messenger.current=null;mounted?.unmount();};\n },[session,attempt]);\n async function login(e: React.FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setBusy(true);\n setError(\"\");\n const form = new FormData(e.currentTarget);\n try {\n const r = await fetch(\"/api/session\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(Object.fromEntries(form)),\n });\n const data = await r.json();\n if (!r.ok) throw Error(data.error?.message ?? \"Sign-in failed.\");\n setSession(data);\n } catch (e) {\n setError((e as Error).message);\n } finally {\n setBusy(false);\n }\n }\n async function logout() {\n const token = session?.token;\n try {\n await messenger.current?.signOut();\n } catch {\n setError(\"Signed out, but this browser could not erase saved drafts. Clear this site's browser data before sharing this computer.\");\n } finally {\n setSession(null);\n }\n if (token)\n await fetch(\"/api/logout\", {\n method: \"POST\",\n headers: {\n authorization: \"Bearer \" + token,\n \"content-type\": \"application/json\",\n },\n body: \"{}\",\n }).catch(() => {});\n }\n return (\n <main>\n <h1>Robono website messaging</h1>\n <p>\n This local example uses your test integration and your existing\n messaging design.\n </p>\n {!session ? (\n <form onSubmit={login}>\n <label>\n Example user\n <select name=\"user\">\n <option value=\"alice\">Alice</option>\n <option value=\"bob\">Bob</option>\n </select>\n </label>\n <label>\n Demo password\n <input\n name=\"password\"\n type=\"password\"\n required\n autoComplete=\"current-password\"\n />\n </label>\n <button disabled={busy}>Sign in</button>\n </form>\n ) : (\n <>\n <div className=\"toolbar\"><button onClick={()=>void logout()}>Sign out</button></div>\n <div ref={host} style={{height:'min(700px,75dvh)'}}/>\n </>\n )}\n {error && <p role=\"alert\">{error} {session&&<button onClick={()=>setAttempt(value=>value+1)}>Retry</button>}</p>}\n </main>\n );\n}\ncreateRoot(document.getElementById(\"root\")!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n);\n","src/style.css":"body {\n margin: 0;\n background: #f4f5f2;\n color: #252b21;\n font:\n 16px system-ui,\n sans-serif;\n}\nmain {\n max-width: 960px;\n margin: 24px auto;\n padding: 0 16px;\n}\nh1 {\n font-size: 24px;\n}\nform,\n.toolbar {\n display: flex;\n gap: 12px;\n align-items: end;\n flex-wrap: wrap;\n margin: 16px 0;\n}\nform label,\n.toolbar label {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\nform input,\nform select,\n.toolbar select,\nform button,\n.toolbar button {\n font: inherit;\n padding: 10px;\n border: 1px solid #bfc6ba;\n border-radius: 8px;\n background: white;\n}\nbutton {\n cursor: pointer;\n}\nmain > section {\n border: 1px solid #cbd0c6;\n border-radius: 12px;\n}\np[role=\"alert\"] {\n color: #9b241f;\n}\n@media (max-width: 500px) {\n main {\n margin: 12px auto;\n padding: 0 8px;\n }\n h1 {\n font-size: 20px;\n }\n .toolbar {\n margin: 10px 0;\n }\n}\n",".env.example":"# Server only. Never prefix this key with VITE_. Use a TEST integration.\nROBONO_API_KEY=\n# Local demo sign-in only; replace with your own identity service in production.\nDEMO_PASSWORD=\nPORT=5188\n# Each independent example installation can choose its own fixture prefix.\nDEMO_USER_PREFIX=website-demo\n","README.md":"# Website messaging integration example\n\nThis example uses Robono's hosted Messenger. Its small local server signs Alice or Bob in and issues a short-lived user token. Messages, files, calls and Maps connect directly to Robono; they do not pass through that local server. The Robono API key stays on the server.\n\nRequirements: Node 22+, a Robono **test** integration with Messaging and Group messaging enabled. Choose the tools and appearance in **Features & preview**.\n\n```sh\ncd examples/messaging-web\nnpm install\ncp .env.example .env\n# Set ROBONO_API_KEY and a random DEMO_PASSWORD of at least 12 characters.\nnpm start\n```\n\nOpen the printed `http://127.0.0.1:5188` address in two browser profiles. Sign in as Alice and Bob with the demo password. Open the direct conversation or Website group and exchange messages. Selected photos and videos have removable thumbnails; sent images open in the supplied viewer. Interrupted sends remain available for recovery.\n\nThe default test users are `website-demo-alice` and `website-demo-bob`. Use a different `DEMO_USER_PREFIX` for independent demonstrations. The example creates these contacts and a group at revision 1. Do not reuse that prefix for real users or independently change these memberships. Sent messages and attachments remain subject to your test integration's storage, retention and usage settings after the example stops.\n\n## Use in your application\n\nThe automatic installer is the recommended starting point:\n\n```sh\nnpx --package @robono/server robono-messenger-install\n```\n\nKeep your existing sign-in. The generated `/api/robono-token` handler verifies that login and obtains a token for that verified user. Synchronize who may communicate, group membership and blocks from your own authoritative records. Pass your users' names and avatars to the supplied Messenger. No chat-forwarding server is required.\n\nThe password sign-in in this example is **local development only**. The example binds to localhost and refuses production mode. `npm run build` validates the frontend; it does not turn the example's authentication into a production login service. Never expose the demo server or put the private API key in browser files.\n\nFor notifications, register your HTTPS website origin and chat page in **Your app → Message notifications**. The installer puts the notification helper on your own website; browser rules require this small file on the same origin. Users enable alerts in the supplied Account screen. Website notifications do not require Firebase credentials. On iPhone, browser notifications require a Home Screen installation. Native iPhone/Android apps need their own Apple/Google notification credentials, as explained during setup.\n\nCall `await chat.signOut()` before ending your application's user session. This clears private saved work and revokes the Robono session. The supplied example's Sign out button follows that order.\n\nSee [the hosted setup guide](https://robono.com/guides/hosted-messenger.html) for supported frameworks, existing login connections and optional customization. Repository development can use `ROBONO_WORKSPACE_SDK=1 npm start` after building the SDK packages. Downloaded files always use the published packages.\n",".gitignore":"node_modules/\ndist/\n.env\n.env.*.local\n"}}
1
+ {"schema":1,"preview":{"package.json":"{\n \"name\": \"robono-messenger-preview\",\n \"private\": true,\n \"type\": \"module\",\n \"engines\": {\n \"node\": \">=22.12\"\n },\n \"scripts\": {\n \"start\": \"vite --host 127.0.0.1\",\n \"dev\": \"vite --host 127.0.0.1\",\n \"build\": \"tsc --noEmit && vite build\"\n },\n \"dependencies\": {\n \"@robono/messaging\": \"^0.8.0\",\n \"@robono/messaging-web\": \"^0.11.0\",\n \"react\": \"^19.2.3\",\n \"react-dom\": \"^19.2.3\",\n \"@robono/location\": \"^0.4.0\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.2.2\",\n \"@types/react-dom\": \"^19.2.2\",\n \"typescript\": \"^6.0.3\",\n \"vite\": \"^7.3.6\"\n }\n}\n","index.html":"<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Robono website messaging</title></head><body><div id=\"root\"><main style=\"font-family:system-ui;max-width:600px;margin:48px auto;padding:20px\"><h1>Robono website messaging</h1><p id=\"startup-message\">Opening the chat…</p><noscript>Enable JavaScript to use this example.</noscript></main></div><script>if(location.protocol==='file:')document.getElementById('startup-message').textContent='Start this example with npm start in its folder, then open http://127.0.0.1:5188 in your browser. Opening this file directly cannot connect the chat.';window.addEventListener('error',function(){var message=document.getElementById('startup-message');if(message&&location.protocol!=='file:')message.textContent='The chat could not start. Check that npm start is still running, then refresh this page.';},true);</script><script type=\"module\" src=\"/src/main.tsx\"></script></body></html>\n","tsconfig.json":"{\n \"compilerOptions\": {\n \"target\": \"ES2022\", \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\", \"moduleResolution\": \"Bundler\", \"jsx\": \"react-jsx\",\n \"strict\": true, \"skipLibCheck\": true, \"esModuleInterop\": true,\n \"noEmit\": true, \"types\": [\"vite/client\"]\n },\n \"include\": [\"src\"]\n}\n","src/main.tsx":"import React from 'react';\nimport {createRoot} from 'react-dom/client';\nimport RobonoPreview from './RobonoPreview';\ncreateRoot(document.getElementById('root')!).render(<RobonoPreview/>);\n","src/RobonoPreview.tsx":"'use client';\nimport React,{useEffect,useRef} from 'react';\nimport {mountRobonoMessenger} from '@robono/messaging-web';\nimport {defaultMessagingSettings} from '@robono/messaging';\nexport default function RobonoPreview(){\n const alice=useRef<HTMLDivElement>(null),bob=useRef<HTMLDivElement>(null);\n useEffect(()=>{\n if(!alice.current||!bob.current)return;\n const settings=defaultMessagingSettings();settings.enabled=true;\n const messages:any[]=[];\n const transport=(userId:string):typeof fetch=>async(_request,init)=>{\n const body=JSON.parse(String(init?.body??'{}')),other=userId==='alice'?'bob':'alice';let result:unknown;\n switch(body.operation){\n case 'settings':result={settings};break;\n case 'conversations':result={appearance:settings.appearance,conversations:[{id:'demo-chat',kind:'direct',contactId:other,lastMessage:messages.at(-1)??null,unreadCount:0,canSend:true}],hasMore:false,nextCursor:null};break;\n case 'list':result={settings,messages:[...messages],hasMore:false,nextCursor:null,conversation:{kind:'direct',canSend:true}};break;\n case 'send':{\n let message=messages.find(m=>m.senderId===userId&&m.clientMessageId===body.clientMessageId);\n if(!message){message={...body,id:String(messages.length+1),senderId:userId,createdAt:new Date().toISOString(),readAt:null};messages.push(message);}\n result={message};break;\n }\n case 'read':for(const m of messages)if(m.senderId!==userId)m.readAt=new Date().toISOString();result={ok:true};break;\n case 'seen':case 'inventory':result={ok:true};break;\n default:return Response.json({error:'This local preview demonstrates text only. Connect your test account to try other features.'},{status:400});\n }\n return Response.json(result);\n };\n const mount=(element:HTMLDivElement,userId:string)=>mountRobonoMessenger(element,{companyName:'Example company',userId,getAccessToken:async()=>'local-preview-only',contacts:{alice:{name:'Alice'},bob:{name:'Bob'}},endpoint:'/local-preview-never-sent',fetch:transport(userId),notifications:false,mediaUrl:false,persistence:false});\n const a=mount(alice.current,'alice'),b=mount(bob.current,'bob');return()=>{a.unmount();b.unmount();};\n },[]);\n return <main style={{padding:16,fontFamily:'system-ui'}}><h1>Try a conversation</h1><p>Local preview · Fictional Alice and Bob · Text stays in this page and disappears on reload. This does not test your live connection.</p><p>Open Bob on the left and Alice on the right, then send a message.</p><div style={{display:'flex',flexWrap:'wrap',gap:16}}><section style={{flex:'1 1 320px'}}><h2>Alice</h2><div ref={alice} style={{height:640}}/></section><section style={{flex:'1 1 320px'}}><h2>Bob</h2><div ref={bob} style={{height:640}}/></section></div></main>;\n}\n","src/vite-env.d.ts":"/// <reference types=\"vite/client\" />\n","README.md":"# Robono Messenger preview\n\nRun `npm start`, then open the printed localhost address. This uses the supplied Messenger with fictional Alice and Bob; it sends no messages to Robono and clears on reload. It demonstrates text and layout, not uploads, calls, Maps or live delivery.\n\nFor a real test connection, generate a separate example with `npx --package @robono/server robono-messenger-example --live`. For your own app, run `npx --package @robono/server robono-messenger-install` inside that app and follow https://robono.com/guides/hosted-messenger.html . Keep your existing login and server-side permissions.\n",".gitignore":"node_modules/\ndist/\n.env\n.env.*.local\n"},"live":{"package.json":"{\n \"name\": \"robono-messaging-web-example\",\n \"private\": true,\n \"type\": \"module\",\n \"engines\": {\n \"node\": \">=22.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env server.mjs\",\n \"build\": \"tsc --noEmit && vite build\",\n \"start\": \"node --env-file-if-exists=.env server.mjs\"\n },\n \"dependencies\": {\n \"@robono/messaging\": \"^0.8.0\",\n \"@robono/messaging-web\": \"^0.11.0\",\n \"@robono/server\": \"^0.28.0\",\n \"react\": \"^19.2.3\",\n \"react-dom\": \"^19.2.3\",\n \"@robono/location\": \"^0.4.0\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^19.2.2\",\n \"@types/react-dom\": \"^19.2.2\",\n \"typescript\": \"^6.0.3\",\n \"vite\": \"^7.3.6\"\n }\n}\n","server.mjs":"// Local example only. Production hosts supply their own identity/session service.\nimport http from \"node:http\";\nimport { randomBytes, timingSafeEqual } from \"node:crypto\";\nimport { pathToFileURL } from \"node:url\";\nimport * as publishedSdk from \"@robono/server\";\nexport async function startExample({\n apiKey = process.env.ROBONO_API_KEY,\n password = process.env.DEMO_PASSWORD,\n baseUrl = process.env.ROBONO_MESSAGING_URL,\n sessionsUrl,\n connectionsUrl,\n port = Number(process.env.PORT || 5188),\n userPrefix = process.env.DEMO_USER_PREFIX || \"website-demo\",\n robono: provided,\n // Repository development only. Downloaded examples use the published packages.\n workspaceSdk = process.env.ROBONO_WORKSPACE_SDK === '1',\n} = {}) {\n const {RobonoMessagingBackend,RobonoMessengerConnections,createRobonoTokenHandler} = workspaceSdk\n ? await import('../../packages/server/dist/index.js') : publishedSdk;\n if (process.env.NODE_ENV === \"production\")\n throw Error(\n \"The example sign-in is for local development. Use your own production authentication.\",\n );\n if (!password || password.length < 12)\n throw Error(\"Set DEMO_PASSWORD to at least 12 characters.\");\n if (!apiKey)\n throw Error(\"Set your test integration ROBONO_API_KEY.\");\n const robono =\n provided ??\n new RobonoMessagingBackend({ apiKey, ...(baseUrl ? { baseUrl } : {}) });\n const users = { alice: userPrefix + \"-alice\", bob: userPrefix + \"-bob\" };\n const connections=new RobonoMessengerConnections({apiKey,...(connectionsUrl?{baseUrl:connectionsUrl}:{})});\n const relationship = await connections.synchronizeContact({\n externalUserIds: Object.values(users),\n allowed: true,\n revision: 1,\n });\n const group = await robono.setGroup({\n externalGroupId: userPrefix + \"-group\",\n name: \"Website group\",\n ownerId: users.alice,\n revision: 1,\n allowed: true,\n members: Object.values(users).map((userId) => ({ userId, canSend: true })),\n });\n const conversations = [\n { id: relationship.conversationId, name: \"Direct conversation\" },\n { id: group.conversationId, name: \"Website group\" },\n ];\n const sessions = new Map(),\n attempts = new Map();\n const authenticate = async (request) => {\n const token = request.headers\n .get(\"authorization\")\n ?.replace(/^Bearer\\s+/i, \"\");\n const session = sessions.get(token);\n return session && session.expires > Date.now() ? session.userId : null;\n };\n let tokenHandler;\n const { createServer } = await import(\"vite\");\n let vite;\n const server = http.createServer(async (req, res) => {\n const send = (value, status = 200) => {\n res.writeHead(status, {\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-store\",\n });\n res.end(JSON.stringify(value));\n };\n const host = \"127.0.0.1:\" + server.address().port,\n origin = \"http://\" + host;\n if (\n req.headers.host !== host ||\n (req.headers.origin && req.headers.origin !== origin)\n )\n return send({ error: { message: \"Origin not allowed.\" } }, 403);\n if (!req.url?.startsWith(\"/api/\"))\n return vite.middlewares(req, res, () =>\n send({ error: { message: \"Not found.\" } }, 404),\n );\n if (req.method !== \"POST\")\n return send({ error: { message: \"Use POST.\" } }, 405);\n try {\n let raw = \"\";\n for await (const part of req) {\n raw += part;\n if (raw.length > 65536)\n return send({ error: { message: \"Request too large.\" } }, 413);\n }\n const body = JSON.parse(raw || \"{}\");\n if (req.url === \"/api/session\") {\n const address = req.socket.remoteAddress,\n now = Date.now();\n const attempt = attempts.get(address);\n const count =\n attempt && attempt.reset > now\n ? attempt\n : { count: 0, reset: now + 60000 };\n attempts.set(address, count);\n if (++count.count > 10)\n return send({ error: { message: \"Try again in a minute.\" } }, 429);\n const received = Buffer.from(String(body.password ?? \"\")),\n expected = Buffer.from(password);\n if (\n !Object.hasOwn(users, body.user) ||\n received.length !== expected.length ||\n !timingSafeEqual(received, expected)\n )\n return send({ error: { message: \"Sign-in failed.\" } }, 401);\n const token = randomBytes(32).toString(\"base64url\");\n sessions.set(token, {\n userId: users[body.user],\n expires: now + 3600000,\n });\n return send({\n token,\n userId: users[body.user],\n conversations,\n participants: Object.fromEntries(\n Object.entries(users).map(([name, id]) => [\n id,\n { name: name === \"alice\" ? \"Alice\" : \"Bob\" },\n ]),\n ),\n });\n }\n const request = new Request(origin + req.url, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n authorization: req.headers.authorization ?? \"\",\n ...(req.headers.origin?{origin:req.headers.origin}:{}),\n },\n body: raw,\n });\n if (req.url === \"/api/logout\") {\n sessions.delete(req.headers.authorization?.replace(/^Bearer\\s+/i, \"\"));\n return send({ ok: true });\n }\n if(new URL(request.url).pathname!==\"/api/robono-token\")return send({error:{message:\"Not found.\"}},404);\n const response = await tokenHandler(request);\n res.writeHead(response.status, Object.fromEntries(response.headers));\n res.end(await response.text());\n } catch {\n send({ error: { message: \"Request failed.\" } }, 503);\n }\n });\n vite = await createServer({\n root: new URL(\".\", import.meta.url).pathname,\n server: { middlewareMode: true, hmr: {server} },\n appType: \"spa\",\n cacheDir: \"node_modules/.vite-robono-example\",\n resolve: { dedupe: [\"react\", \"react-dom\", \"@robono/messaging\"], ...(workspaceSdk ? {alias:{\n '@robono/location':new URL('../../packages/location/dist/index.js',import.meta.url).pathname,\n '@robono/messaging':new URL('../../packages/messaging/dist/index.js',import.meta.url).pathname,\n '@robono/messaging-web':new URL('../../packages/messaging-web/dist/index.js',import.meta.url).pathname,\n }} : {}) },\n ...(workspaceSdk ? {optimizeDeps:{noDiscovery:true,include:['react','react-dom','react-dom/client','react/jsx-runtime','react/jsx-dev-runtime'],exclude:['@robono/messaging','@robono/messaging-web','@robono/location','make-plural/cardinals']}} : {}),\n });\n await new Promise((resolve) => server.listen(port, \"127.0.0.1\", resolve));\n tokenHandler=createRobonoTokenHandler({apiKey,authenticate,origins:[\"http://127.0.0.1:\"+server.address().port],...(sessionsUrl?{baseUrl:sessionsUrl}:{})});\n return {\n url: \"http://127.0.0.1:\" + server.address().port,\n users,\n conversations,\n async close() {\n await vite.close();\n server.closeAllConnections();\n await new Promise((resolve) => server.close(resolve));\n },\n };\n}\nif (\n process.argv[1] &&\n import.meta.url === pathToFileURL(process.argv[1]).href\n) {\n const app = await startExample();\n console.log(\"Website messaging example: \" + app.url);\n for (const signal of [\"SIGINT\", \"SIGTERM\"])\n process.once(signal, () => void app.close().then(() => process.exit()));\n}\n","index.html":"<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Robono website messaging</title></head><body><div id=\"root\"><main style=\"font-family:system-ui;max-width:600px;margin:48px auto;padding:20px\"><h1>Robono website messaging</h1><p id=\"startup-message\">Opening the chat…</p><noscript>Enable JavaScript to use this example.</noscript></main></div><script>if(location.protocol==='file:')document.getElementById('startup-message').textContent='Start this example with npm start in its folder, then open http://127.0.0.1:5188 in your browser. Opening this file directly cannot connect the chat.';window.addEventListener('error',function(){var message=document.getElementById('startup-message');if(message&&location.protocol!=='file:')message.textContent='The chat could not start. Check that npm start is still running, then refresh this page.';},true);</script><script type=\"module\" src=\"/src/main.tsx\"></script></body></html>\n","tsconfig.json":"{\n \"compilerOptions\": {\n \"target\": \"ES2022\", \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\", \"moduleResolution\": \"Bundler\", \"jsx\": \"react-jsx\",\n \"strict\": true, \"skipLibCheck\": true, \"esModuleInterop\": true,\n \"noEmit\": true, \"types\": [\"vite/client\"]\n },\n \"include\": [\"src\"]\n}\n","src/main.tsx":"import React, { useEffect, useState, useRef } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport {mountHostedRobonoMessenger} from \"@robono/messaging-web\";\nimport {hostedRobonoTokenProvider} from \"@robono/messaging\";\nimport \"./style.css\";\ntype Session = {\n token: string;\n userId: string;\n conversations: { id: string; name: string }[];\n participants: Record<string, { name: string }>;\n};\nfunction App() {\n const [session,setSession]=useState<Session|null>(null),[error,setError]=useState(''),[busy,setBusy]=useState(false),[attempt,setAttempt]=useState(0);\n const host=useRef<HTMLDivElement>(null),messenger=useRef<Awaited<ReturnType<typeof mountHostedRobonoMessenger>>|null>(null);\n useEffect(()=>{\n if(!session||!host.current)return;\n const controller=new AbortController();let mounted:Awaited<ReturnType<typeof mountHostedRobonoMessenger>>|undefined;setError('');\n void mountHostedRobonoMessenger(host.current,{\n userId:session.userId,signal:controller.signal,\n tokenProvider:hostedRobonoTokenProvider({tokenEndpoint:'/api/robono-token',getAccessToken:async()=>session.token}),\n companyName:'Example company',contacts:session.participants,participants:session.participants,\n account:{name:session.participants[session.userId]?.name??'Example account'},style:{height:'min(700px,75dvh)'},\n }).then(value=>{if(controller.signal.aborted){void value.signOut().catch(()=>{});return;}mounted=value;messenger.current=value;}).catch(()=>{if(!controller.signal.aborted)setError('Could not connect to messaging. Check your sign-in connection.');});\n return()=>{controller.abort();if(messenger.current===mounted)messenger.current=null;mounted?.unmount();};\n },[session,attempt]);\n async function login(e: React.FormEvent<HTMLFormElement>) {\n e.preventDefault();\n setBusy(true);\n setError(\"\");\n const form = new FormData(e.currentTarget);\n try {\n const r = await fetch(\"/api/session\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(Object.fromEntries(form)),\n });\n const data = await r.json();\n if (!r.ok) throw Error(data.error?.message ?? \"Sign-in failed.\");\n setSession(data);\n } catch (e) {\n setError((e as Error).message);\n } finally {\n setBusy(false);\n }\n }\n async function logout() {\n const token = session?.token;\n try {\n await messenger.current?.signOut();\n } catch {\n setError(\"Signed out, but this browser could not erase saved drafts. Clear this site's browser data before sharing this computer.\");\n } finally {\n setSession(null);\n }\n if (token)\n await fetch(\"/api/logout\", {\n method: \"POST\",\n headers: {\n authorization: \"Bearer \" + token,\n \"content-type\": \"application/json\",\n },\n body: \"{}\",\n }).catch(() => {});\n }\n return (\n <main>\n <h1>Robono website messaging</h1>\n <p>\n This local example uses your test integration and your existing\n messaging design.\n </p>\n {!session ? (\n <form onSubmit={login}>\n <label>\n Example user\n <select name=\"user\">\n <option value=\"alice\">Alice</option>\n <option value=\"bob\">Bob</option>\n </select>\n </label>\n <label>\n Demo password\n <input\n name=\"password\"\n type=\"password\"\n required\n autoComplete=\"current-password\"\n />\n </label>\n <button disabled={busy}>Sign in</button>\n </form>\n ) : (\n <>\n <div className=\"toolbar\"><button onClick={()=>void logout()}>Sign out</button></div>\n <div ref={host} style={{height:'min(700px,75dvh)'}}/>\n </>\n )}\n {error && <p role=\"alert\">{error} {session&&<button onClick={()=>setAttempt(value=>value+1)}>Retry</button>}</p>}\n </main>\n );\n}\ncreateRoot(document.getElementById(\"root\")!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n);\n","src/style.css":"body {\n margin: 0;\n background: #f4f5f2;\n color: #252b21;\n font:\n 16px system-ui,\n sans-serif;\n}\nmain {\n max-width: 960px;\n margin: 24px auto;\n padding: 0 16px;\n}\nh1 {\n font-size: 24px;\n}\nform,\n.toolbar {\n display: flex;\n gap: 12px;\n align-items: end;\n flex-wrap: wrap;\n margin: 16px 0;\n}\nform label,\n.toolbar label {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\nform input,\nform select,\n.toolbar select,\nform button,\n.toolbar button {\n font: inherit;\n padding: 10px;\n border: 1px solid #bfc6ba;\n border-radius: 8px;\n background: white;\n}\nbutton {\n cursor: pointer;\n}\nmain > section {\n border: 1px solid #cbd0c6;\n border-radius: 12px;\n}\np[role=\"alert\"] {\n color: #9b241f;\n}\n@media (max-width: 500px) {\n main {\n margin: 12px auto;\n padding: 0 8px;\n }\n h1 {\n font-size: 20px;\n }\n .toolbar {\n margin: 10px 0;\n }\n}\n",".env.example":"# Server only. Never prefix this key with VITE_. Use a TEST integration.\nROBONO_API_KEY=\n# Local demo sign-in only; replace with your own identity service in production.\nDEMO_PASSWORD=\nPORT=5188\n# Each independent example installation can choose its own fixture prefix.\nDEMO_USER_PREFIX=website-demo\n","README.md":"# Website messaging integration example\n\nThis example uses Robono's hosted Messenger. Its small local server signs Alice or Bob in and issues a short-lived user token. Messages, files, calls and Maps connect directly to Robono; they do not pass through that local server. The Robono API key stays on the server.\n\nRequirements: Node 22+, a Robono **test** integration with Messaging and Group messaging enabled. Choose the tools and appearance in **Features & preview**.\n\n```sh\ncd examples/messaging-web\nnpm install\ncp .env.example .env\n# Set ROBONO_API_KEY and a random DEMO_PASSWORD of at least 12 characters.\nnpm start\n```\n\nOpen the printed `http://127.0.0.1:5188` address in two browser profiles. Sign in as Alice and Bob with the demo password. Open the direct conversation or Website group and exchange messages. Selected photos and videos have removable thumbnails; sent images open in the supplied viewer. Interrupted sends remain available for recovery.\n\nThe default test users are `website-demo-alice` and `website-demo-bob`. Use a different `DEMO_USER_PREFIX` for independent demonstrations. The example creates these contacts and a group at revision 1. Do not reuse that prefix for real users or independently change these memberships. Sent messages and attachments remain subject to your test integration's storage, retention and usage settings after the example stops.\n\n## Use in your application\n\nThe automatic installer is the recommended starting point:\n\n```sh\nnpx --package @robono/server robono-messenger-install\n```\n\nKeep your existing sign-in. The generated `/api/robono-token` handler verifies that login and obtains a token for that verified user. Synchronize who may communicate, group membership and blocks from your own authoritative records. Pass your users' names and avatars to the supplied Messenger. No chat-forwarding server is required.\n\nThe password sign-in in this example is **local development only**. The example binds to localhost and refuses production mode. `npm run build` validates the frontend; it does not turn the example's authentication into a production login service. Never expose the demo server or put the private API key in browser files.\n\nFor notifications, register your HTTPS website origin and chat page in **Your app → Message notifications**. The installer puts the notification helper on your own website; browser rules require this small file on the same origin. Users enable alerts in the supplied Account screen. Website notifications do not require Firebase credentials. On iPhone, browser notifications require a Home Screen installation. Native iPhone/Android apps need their own Apple/Google notification credentials, as explained during setup.\n\nCall `await chat.signOut()` before ending your application's user session. This clears private saved work and revokes the Robono session. The supplied example's Sign out button follows that order.\n\nSee [the hosted setup guide](https://robono.com/guides/hosted-messenger.html) for supported frameworks, existing login connections and optional customization. Repository development can use `ROBONO_WORKSPACE_SDK=1 npm start` after building the SDK packages. Downloaded files always use the published packages.\n",".gitignore":"node_modules/\ndist/\n.env\n.env.*.local\n"}}
@@ -32,7 +32,7 @@ export interface MessengerInstallPlan {
32
32
  notes: string[];
33
33
  setupFile?: string;
34
34
  }
35
- export declare const messengerInstallerVersion: "0.26.0";
35
+ export declare const messengerInstallerVersion: "0.28.0";
36
36
  export declare const generatedHash: (content: string) => string;
37
37
  export declare function generatedKey(file: string, client: string, server: string): string;
38
38
  export declare function recordGeneratedFiles(files: MessengerInstallPlan['files'], client: string, server: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,kBAAkB,GACxB,uBAAuB,CA6FzB;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CAInF"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,kBAAkB,GACxB,uBAAuB,CA8FzB;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CAInF"}
package/dist/push.js CHANGED
@@ -45,6 +45,7 @@ export function toClientPushPayload(event) {
45
45
  return { event: event.event, event_id };
46
46
  case "bridge.message_created":
47
47
  case "bridge.message_status_changed":
48
+ case "bridge.media_source_updated":
48
49
  return {
49
50
  event: event.event,
50
51
  event_id,
package/dist/push.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -108,7 +108,15 @@ export interface MediaCapability {
108
108
  strip_metadata?: boolean;
109
109
  output?: MediaOutputPreference;
110
110
  }
111
+ export interface HistoryKindCapability {
112
+ max_items?: number | null;
113
+ message_expires_after_seconds?: number | null;
114
+ /** Voice only: retain the latest voice message from each participant. */
115
+ walkie_talkie?: boolean;
116
+ }
111
117
  export interface HistoryCapability {
118
+ /** Additional limits by kind. Set global max_items to null to retain other kinds. */
119
+ by_kind?: Partial<Record<MessageKind, HistoryKindCapability>>;
112
120
  /** With max_items: 2, retain one latest message per participant. Otherwise retain the last two total. */
113
121
  walkie_talkie?: boolean;
114
122
  max_items: number | null;
@@ -154,6 +162,8 @@ export interface AppIdentity {
154
162
  display_name?: string;
155
163
  }
156
164
  export interface BridgeSourceParticipant {
165
+ /** Last accepted revision for this writer. Persist it before the next update. */
166
+ applied_revision?: number;
157
167
  app: DirectoryEntry | AppIdentity;
158
168
  external_user_id: string | null;
159
169
  display_name: string;
@@ -162,6 +172,8 @@ export interface BridgeSourceParticipant {
162
172
  guardians?: Guardian[];
163
173
  }
164
174
  export interface BridgeTargetParticipant {
175
+ /** Last accepted revision for this writer. Persist it before the next update. */
176
+ applied_revision?: number;
165
177
  app: DirectoryEntry | AppIdentity;
166
178
  identifier: string | null;
167
179
  external_user_id: string | null;
@@ -172,6 +184,8 @@ export interface BridgeTargetParticipant {
172
184
  guardians?: Guardian[];
173
185
  }
174
186
  export interface BridgeConnection {
187
+ /** Side belonging to the authenticated network; user IDs are not globally unique. */
188
+ own_side?: "source" | "target";
175
189
  bridge_connection_id: string;
176
190
  status: BridgeConnectionStatus;
177
191
  status_message?: UserMessage;
@@ -191,6 +205,8 @@ export interface BridgeConnection {
191
205
  created_at: string | null;
192
206
  }
193
207
  export interface BridgeConnectionResponse extends BridgeConnection {
208
+ applied_revision?: number;
209
+ duplicate?: boolean;
194
210
  ok: true;
195
211
  request_id: string;
196
212
  push_status?: "accepted" | "retry_scheduled";
@@ -227,6 +243,8 @@ export interface RespondBridgeConnectionInput {
227
243
  response_details?: JsonObject;
228
244
  }
229
245
  export interface UpdateBridgeConnectionInput {
246
+ /** Monotonic per-side capability update; reuse the same revision and content after an uncertain response. */
247
+ revision?: number;
230
248
  bridge_connection_id: string;
231
249
  external_user_id: string | null;
232
250
  external_account_deleted_at?: string | null;
@@ -266,6 +284,8 @@ export interface RobonoUserSummary {
266
284
  profile_updated_at?: string | null;
267
285
  }
268
286
  export interface RobonoConnectionResponse {
287
+ /** Last accepted revision for this writer. Persist it before the next update. */
288
+ applied_revision?: number;
269
289
  ok: true;
270
290
  request_id: string;
271
291
  connection_id: string;
@@ -298,6 +318,8 @@ export interface RobonoConnectionListResponse {
298
318
  * The endpoint-specific API response remains available in `raw`.
299
319
  */
300
320
  export interface EndpointConnection {
321
+ /** Last accepted revision for this writer. Persist it before the next update. */
322
+ applied_revision?: number;
301
323
  endpoint: DirectoryEntry;
302
324
  endpoint_type: DirectoryEntry["type"];
303
325
  connection_id: string;
@@ -328,6 +350,8 @@ export interface EndpointConnectionListResponse {
328
350
  next_cursor: EndpointConnectionCursor | null;
329
351
  }
330
352
  export interface UpdateEndpointConnectionInput {
353
+ /** Monotonic per-side capability update; reuse the same revision and content after an uncertain response. */
354
+ revision?: number;
331
355
  connection: EndpointConnection;
332
356
  external_user_id: string;
333
357
  display_name?: string;
@@ -381,6 +405,23 @@ export type SendBridgeMessageInput = MessageContent & {
381
405
  external_message_id: string;
382
406
  dry_run?: boolean;
383
407
  };
408
+ export interface BridgeSendIdentity {
409
+ bridge_connection_id: string;
410
+ external_user_id: string;
411
+ external_message_id: string;
412
+ }
413
+ export interface RenewBridgeSourceInput extends BridgeSendIdentity {
414
+ source_url: string;
415
+ source_url_expires_at: string;
416
+ revision: number;
417
+ }
418
+ export interface BridgeSendStatus {
419
+ ok: true;
420
+ found: boolean;
421
+ bridge_message_id?: string;
422
+ status?: string;
423
+ content_removed?: boolean;
424
+ }
384
425
  export interface SendBridgeMessageResponse {
385
426
  ok: true;
386
427
  request_id: string;
@@ -811,7 +852,7 @@ export interface DataRequestStatusResponse extends JsonObject {
811
852
  data_request: DataRequestRecord;
812
853
  export?: JsonObject;
813
854
  }
814
- export type RobonoWebhookEventName = "messaging.attachment_removed" | "messaging.message_created" | "messaging.message_removed" | "messaging.report_created" | "calling.incoming" | "calling.dismissed" | "calling.group_incoming" | "calling.group_dismissed" | "calling.countdown_ended" | "connection.status_changed" | "connection.profile_updated" | "message.created" | "message.delivered" | "message.heard" | "message.reaction_updated" | "bridge.connection_requested" | "bridge.connection_status_changed" | "bridge.connection_updated" | "bridge.directory_changed" | "bridge.message_created" | "bridge.message_status_changed" | "bridge.guardian_message_created" | "bridge.guardian_message_status_changed" | "transform.completed" | "transform.failed" | "diagnostic.push_requested" | "pricing.updated" | "data.export_completed" | "data.export_failed" | "data.export_rejected" | "data.deletion_completed" | "data.deletion_failed" | "data.deletion_rejected";
855
+ export type RobonoWebhookEventName = "messaging.attachment_removed" | "messaging.message_created" | "messaging.message_removed" | "messaging.report_created" | "calling.incoming" | "calling.dismissed" | "calling.group_incoming" | "calling.group_dismissed" | "calling.countdown_ended" | "connection.status_changed" | "connection.profile_updated" | "message.created" | "message.delivered" | "message.heard" | "message.reaction_updated" | "bridge.connection_requested" | "bridge.connection_status_changed" | "bridge.connection_updated" | "bridge.directory_changed" | "bridge.message_created" | "bridge.message_status_changed" | "bridge.media_source_updated" | "bridge.guardian_message_created" | "bridge.guardian_message_status_changed" | "transform.completed" | "transform.failed" | "diagnostic.push_requested" | "pricing.updated" | "data.export_completed" | "data.export_failed" | "data.export_rejected" | "data.deletion_completed" | "data.deletion_failed" | "data.deletion_rejected";
815
856
  export interface RobonoWebhookEventBase extends JsonObject {
816
857
  event: RobonoWebhookEventName;
817
858
  event_id: string;
@@ -939,15 +980,27 @@ export interface BridgeMessageCreatedWebhookEvent extends RobonoWebhookEventBase
939
980
  attachment_batch?: AttachmentBatch;
940
981
  speech?: JsonObject;
941
982
  created_at: string;
983
+ source_revision?: number;
942
984
  };
943
985
  }
986
+ export interface BridgeMediaSourceUpdatedWebhookEvent extends RobonoWebhookEventBase {
987
+ event: "bridge.media_source_updated";
988
+ bridge_connection_id: string;
989
+ bridge_message_id: string;
990
+ external_message_id: string;
991
+ source_revision: number;
992
+ recipient: {
993
+ child_app_id: string;
994
+ };
995
+ media: MediaInput | JsonObject;
996
+ }
944
997
  export interface BridgeMessageStatusWebhookEvent extends RobonoWebhookEventBase {
945
998
  event: "bridge.message_status_changed";
946
999
  bridge_connection_id: string;
947
1000
  bridge_message_id: string;
948
1001
  status: BridgeMessageRecord["status"];
949
1002
  }
950
- export type BridgeMessageWebhookEvent = BridgeMessageCreatedWebhookEvent | BridgeMessageStatusWebhookEvent;
1003
+ export type BridgeMessageWebhookEvent = BridgeMessageCreatedWebhookEvent | BridgeMessageStatusWebhookEvent | BridgeMediaSourceUpdatedWebhookEvent;
951
1004
  export interface BridgeGuardianMessageCreatedWebhookEvent extends RobonoWebhookEventBase {
952
1005
  event: "bridge.guardian_message_created";
953
1006
  bridge_connection_id: string;
@@ -1115,7 +1168,7 @@ export interface RobonoBridgeDirectoryPushPayload extends RobonoClientPushPayloa
1115
1168
  event: "bridge.directory_changed";
1116
1169
  }
1117
1170
  export interface RobonoBridgeMessagePushPayload extends RobonoClientPushPayloadBase {
1118
- event: "bridge.message_created" | "bridge.message_status_changed";
1171
+ event: "bridge.message_created" | "bridge.message_status_changed" | "bridge.media_source_updated";
1119
1172
  bridge_connection_id: string;
1120
1173
  bridge_message_id: string;
1121
1174
  }