@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.
- package/CHANGELOG.md +8 -0
- package/HISTORY-IMPORT.md +104 -5
- package/README.md +1 -1
- package/SBOM.spdx.json +9 -9
- package/dist/calling.d.ts +30 -0
- package/dist/calling.d.ts.map +1 -1
- package/dist/calling.js +13 -0
- package/dist/calling.js.map +1 -1
- package/dist/client.d.ts +22 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -3
- package/dist/client.js.map +1 -1
- package/dist/generated/history-import-interactions.d.ts +17 -0
- package/dist/generated/history-import-interactions.d.ts.map +1 -0
- package/dist/generated/history-import-interactions.js +40 -0
- package/dist/generated/history-import-interactions.js.map +1 -0
- package/dist/generated/interactions.d.ts +199 -0
- package/dist/generated/interactions.d.ts.map +1 -0
- package/dist/generated/interactions.js +89 -0
- package/dist/generated/interactions.js.map +1 -0
- package/dist/generated/sdk-versions.d.ts +7 -7
- package/dist/generated/sdk-versions.d.ts.map +1 -1
- package/dist/generated/sdk-versions.js +1 -1
- package/dist/generated/sdk-versions.js.map +1 -1
- package/dist/history-convert.d.ts +52 -0
- package/dist/history-convert.d.ts.map +1 -0
- package/dist/history-convert.js +276 -0
- package/dist/history-convert.js.map +1 -0
- package/dist/history-import-cli.d.ts +1 -7
- package/dist/history-import-cli.d.ts.map +1 -1
- package/dist/history-import-cli.js +4 -44
- package/dist/history-import-cli.js.map +1 -1
- package/dist/history-import-validation.d.ts +8 -0
- package/dist/history-import-validation.d.ts.map +1 -0
- package/dist/history-import-validation.js +85 -0
- package/dist/history-import-validation.js.map +1 -0
- package/dist/history-import.d.ts +8 -1
- package/dist/history-import.d.ts.map +1 -1
- package/dist/history-import.js +27 -6
- package/dist/history-import.js.map +1 -1
- package/dist/history-migrate-cli.d.ts +3 -0
- package/dist/history-migrate-cli.d.ts.map +1 -0
- package/dist/history-migrate-cli.js +260 -0
- package/dist/history-migrate-cli.js.map +1 -0
- package/dist/history-polls.d.ts +4 -0
- package/dist/history-polls.d.ts.map +1 -0
- package/dist/history-polls.js +66 -0
- package/dist/history-polls.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/managed-media.d.ts +10 -0
- package/dist/managed-media.d.ts.map +1 -1
- package/dist/managed-media.js +2 -0
- package/dist/managed-media.js.map +1 -1
- package/dist/messaging-media.d.ts +16 -0
- package/dist/messaging-media.d.ts.map +1 -1
- package/dist/messaging-media.js +19 -0
- package/dist/messaging-media.js.map +1 -1
- package/dist/messaging.d.ts.map +1 -1
- package/dist/messaging.js +6 -1
- package/dist/messaging.js.map +1 -1
- package/dist/messenger-example.json +1 -1
- package/dist/messenger-install.d.ts +1 -1
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +1 -0
- package/dist/push.js.map +1 -1
- package/dist/types.d.ts +56 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/webhooks.d.ts.map +1 -1
- package/dist/webhooks.js +10 -0
- package/dist/webhooks.js.map +1 -1
- 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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"}
|
package/dist/messaging-media.js
CHANGED
|
@@ -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":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"messaging-media.js","sourceRoot":"","sources":["../src/messaging-media.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging.js
CHANGED
|
@@ -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);
|
package/dist/messaging.js.map
CHANGED
|
@@ -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.
|
|
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;
|
package/dist/push.d.ts.map
CHANGED
|
@@ -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,
|
|
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
package/dist/push.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAyB;IAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,yBAAyB;YAC5B,MAAM,IAAI,kBAAkB,CAAC,qEAAqE,EAAC,+BAA+B,CAAC,CAAC;QACtI,KAAK,wBAAwB,CAAC;QAC9B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,wBAAwB,CAAC;QAC9B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB;YACtB,MAAM,IAAI,kBAAkB,CAAC,qDAAqD,EAAE,+BAA+B,CAAC,CAAC;QACvH,KAAK,2BAA2B,CAAC;QACjC,KAAK,4BAA4B;YAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;QAC9E,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB,CAAC;QACzB,KAAK,eAAe,CAAC;QACrB,KAAK,0BAA0B;YAC7B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ;gBACR,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;aAC3C,CAAC;QACJ,KAAK,6BAA6B,CAAC;QACnC,KAAK,kCAAkC,CAAC;QACxC,KAAK,2BAA2B;YAC9B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ;gBACR,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;aACjD,CAAC;QACJ,KAAK,0BAA0B;YAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC1C,KAAK,wBAAwB,CAAC;QAC9B,KAAK,+BAA+B;
|
|
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
|
}
|