{"_id":"@ada-cx/messaging-bridge","_rev":"13-00ed6dbd2f14be0a68f85c120ebc759a","name":"@ada-cx/messaging-bridge","dist-tags":{"setup":"1.0.0-setup.1","latest":"1.5.3"},"versions":{"1.0.0-setup.0":{"name":"@ada-cx/messaging-bridge","version":"1.0.0-setup.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.0.0-setup.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://github.com/AdaSupport/monorepo/tree/main/messaging/packages/bridge#readme","bugs":{"url":"https://github.com/AdaSupport/monorepo/issues"},"dist":{"shasum":"3f859d62976cd33cdea742c8ba1429a9a7dbf31e","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.0.0-setup.0.tgz","fileCount":24,"integrity":"sha512-JEBMLUSAMpkfsC9KS2OZ5Ox5GWtVwGYmRJOpd5ph2ZCuroZAi9Di/VwnDoBFoDuD167d+S9vKir1E2k7hAHCVw==","signatures":[{"sig":"MEUCIQDXq2Xqay8/gQNyTROV4mYj7EeislJXob5bPZCmNeRt0AIgAZ+MEjXv2I2Ate5Mlbx4DmGQgcm+NkpqZilH1h036Zg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212479},"main":"./dist/npm-index.js","type":"module","types":"./dist/npm-index.d.ts","module":"./dist/npm-index.js","exports":{".":{"types":"./dist/npm-index.d.ts","default":"./dist/npm-index.js"},"./react":{"types":"./dist/npm-react.d.ts","default":"./dist/npm-react.js"},"./testing":{"types":"./dist/testing.d.ts","default":"./dist/testing.js"}},"scripts":{"lint":"npx biome check","build":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs"},"_npmUser":{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},"repository":{"url":"git+https://github.com/AdaSupport/monorepo.git","type":"git","directory":"messaging/packages/bridge"},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public","provenance":true},"typesVersions":{"*":{"react":["./dist/npm-react.d.ts"],"testing":["./dist/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.0.0-setup.0_1787510052922_0.2840922458034696","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-setup.1":{"name":"@ada-cx/messaging-bridge","version":"1.0.0-setup.1","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.0.0-setup.1","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"33906dacf3dca69492db87faaa6d2f38dbd6d3b1","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.0.0-setup.1.tgz","fileCount":22,"integrity":"sha512-lvn5SDIPrij6AqgpS2nuecW9psheZPoShSPKqGV4qQ/p0/vE7Z8zE/9CdLkNZL7OXtb0S3UycpBFDm4rwo2j4A==","signatures":[{"sig":"MEUCIQDubAx9yEZ3+2Z3jtsPDIcwdIHlzUgzOQ45uzcwD6l+nwIgfDDTEEwoNZ0eOrhY7cwg9ealE+KFE/bWIIVvC1TEYKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214250},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"e242d420235a4b3bbc5ddf9b7f7bd1950478ff0b","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.19.1","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.0.0-setup.1_1787784782598_0.6899883944463663","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@ada-cx/messaging-bridge","version":"1.0.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.0.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"86b1ea26b717a005eafdd7a828eba41694271b8d","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.0.0.tgz","fileCount":22,"integrity":"sha512-44Ue2hk+0WNwIiIXTvAa5At9fp6pq0Chha3a/S4z2J6Zxw4AQshI3+eA1+XywL4gAVoA2VNlCxPFxjCY5jvmDA==","signatures":[{"sig":"MEYCIQDt3F38GXManHYDJ3wxFz42DUc8Ueu2xw2iQNBZOvGAhgIhAPCBJs9cXuSNYvFaZKUL4pX7wGk3fhUe1OqvnRHFxjFK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216295},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"811ee8fe6daeb693bc1b95e3a41ccb82a9d763eb","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.0.0_1787850408502_0.686831020543142","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ada-cx/messaging-bridge","version":"1.1.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.1.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"217b8c7108da8cdbf391b97dd8d9015a635bf529","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.1.0.tgz","fileCount":22,"integrity":"sha512-yBZQ4YCMSaxQvyS2l4sAQAaq7KT27n2QWmupICXy8/t5NbBnNH9Fg2hU+5E1Ti+NRjaelqeqbosZIym2XsvVFQ==","signatures":[{"sig":"MEUCIQDTkAwUGT5BBEP3cMB9x38/OnsBt2W5vFWyaCOSUgRFBQIgGlFon5AFfSRC7diDjtO6imbRUDi3WS/2C4Wo6SIGckE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218587},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"2e946829214768db9bac6e8f9ae257524e0d8759","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.1.0_1788547316990_0.7819524160213265","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@ada-cx/messaging-bridge","version":"1.2.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.2.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"d67de1e529ea5fecfb9591f605f41f51344dbd1d","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.2.0.tgz","fileCount":22,"integrity":"sha512-PHiWGiUUYeG3XWQ2Dc07S+SwHboO3+I7OAnjKvSBOibOGS8xNQt/1USkRjrWJ5GiZAFdq1Yrfqrus6oMxNYOvQ==","signatures":[{"sig":"MEYCIQCJ6QoFtOmB0Iv7fJxdirnPU28drEhpIoS+02CKB3/X2AIhAMco6F08eGoDElral+uxxV2nanusk/AmeFnkppQlLV8T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226742},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"89ca86a053e4b38cf77cb519cc38309fbd20614d","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.2.0_1788657010204_0.33756826911281945","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@ada-cx/messaging-bridge","version":"1.3.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.3.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"ae9774f175a3f6c654a5bb3afc4a422c87612d44","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.3.0.tgz","fileCount":22,"integrity":"sha512-IBc28h8tZ+SfN+rUZnxr5xgPHKgD4pAlrIg3J7DgiHNfY1yZ9vATV2aBgxClf1z/i3yMIdY2Fst86sDjMbWpLQ==","signatures":[{"sig":"MEYCIQCYuSo5YkWO1W1d10BicgmHDGTmoinsfhVU1faOR59q1gIhAMPKlyuCIos21X+3RaBpSkNlyS4mF3HDsZzrk8TeD1eI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230801},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"9fb7ddd694e3b909a69beb04310922e2e97ffa49","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.3.0_1788986725256_0.7690196051944065","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@ada-cx/messaging-bridge","version":"1.3.1","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.3.1","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"adee5b0b3793ca01e2bb32321c7c7bdceca81c2c","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.3.1.tgz","fileCount":22,"integrity":"sha512-5MByy2If5HDFkkPCNOw/UZZAyNW0LO7Z78hHOdOXV7/KZg4amKRRz2s1/68VFE5tFNo+qdZM9VVeMEU32KiglQ==","signatures":[{"sig":"MEQCIBsten2BhVSltGBirUzgr7aHVQNTfmU7RyEvMRe3566VAiApWE8SmlkOCSfIRljHbpsaTfaw3ZND+SLtDyL6j6Boag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBrCagxdNx4YR1kkYF4A7cuCUuVcbCZCObPrQlXqDdnaAiEA3QLhgJ2eMDq4lZeQGYO93cpAb3xY/mtJskpZtuILRlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241640},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"be27dec7fb77498d823fdcb337d965ed0a5f7007","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.3.1_1790025443715_0.6349018682665191","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@ada-cx/messaging-bridge","version":"1.3.3","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.3.3","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"6dad55b3b046238e132797b232ed00ad7950304f","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.3.3.tgz","fileCount":22,"integrity":"sha512-rsNKo/W8ra65xr9uB8FADjypZlVvg9lBRWic/EqihI0dmwLl8VpcRw2CgCTVbkUItI5ZN7fAsMUnTB7aeYD3zw==","signatures":[{"sig":"MEYCIQDtaCcxFwGfHSuN1GvMxTyUsH84xlFR1W+rn6dvhUkIogIhAODrkS1oCfMling1Lbf3M1WoP6olS67wGHQiftDhSuJR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAZPv2U6RJNAOz8HObBAa4vEADllhi/YghN813u3OEV7AiB9ceRX0h6feLDQfkijP36eP4Ah/4mdgH6sb5+gXjuofQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249393},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"765844015afb36ad33360bff1ad197db8bb16b56","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.3.3_1790186470270_0.2673938253075758","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@ada-cx/messaging-bridge","version":"1.4.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.4.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"1731fb1763c1a1f25142c78874dfa3a5e1fa7be1","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.4.0.tgz","fileCount":22,"integrity":"sha512-4g6qiIZCrSlcE2GqIhaargZIaHH+VY3AZASaCZCJVVgm6rtQUul/gBzJxBi9T/ubS+iHSQ7ZDb+PvhayU72DPA==","signatures":[{"sig":"MEYCIQCBqKFqoTGmnhzeZPqRDlF7APDE4gp3yU6WMIObd2VIqAIhAI9BJGA61uTsW/9iNHpqjG1wiYeRYvckf3EBfTWK9Rxk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC3vpPvkyVUI7HSOonIFsO/BKMH9brr0Yj6f07hojQLCgIgQkSLgMdUVivwmUEW7PYXhwHlg/Ggp7iw0GKYj/j21bg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252300},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"f36a22a5310a27e21b9f8d63b997c37b3831a739","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.4.0_1790259573786_0.4155926590573129","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@ada-cx/messaging-bridge","version":"1.5.0","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.5.0","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"83f1df75fcc77b978f049cf246a4f33ade57b743","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.5.0.tgz","fileCount":22,"integrity":"sha512-vOr96Nnxrv7TUhliunprbLSZC3k5DD4QlWdbzXhYp1s/98Iph1UwjpIxeRZ4DTx6+Gu8eI1y0zeshRD02OlcfQ==","signatures":[{"sig":"MEUCIFzJup2quL0IrchmhtG6j0weXj3s1YL24I50HmX4LbqCAiEA646yjUuOUrVZXbLJKdnOd0YUvmsv3lav9iTI0vIZNtM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDiFImhdmAaMQk0a+/ISZSc7psfioCH2dVfGrPMq3SjnwIgQXg1uO/Wtm/R8Eh50jfUQQDz8XiyPr+SKGJmnb/aHw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252323},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"03970f90b886c417d979ba0549e39681adb6abe0","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.5.0_1790281617302_0.06640342045756809","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@ada-cx/messaging-bridge","version":"1.5.1","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.5.1","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"a5c404d99233c034488597ea0c1652841c4a6960","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.5.1.tgz","fileCount":22,"integrity":"sha512-CaV+sdik9YP7to/TF916W5Ta739swJHln2M9EIlyoztFVk3SQfOPwlemWWYOBfvT3nyvFd+eu69MJjgMgrQvQQ==","signatures":[{"sig":"MEQCIE/S8UaFWwaYZwLcF7RkLI2CYN6SC7KM+46HOWd1VvBAAiAeNV+JMMEBagm5RiS5k/rIzVplaFRsqRQ65khPRxndAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHPUI6WFQQ/3C1Nvmnng7tqv0qHh2mEV5T3evhDG9TVGAiAQ3ch10EXVgaugzOPEmMkxnhcV8VqJRYfawpPfDSIfMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252540},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"93bdbbf694c2ab510ddc4a74868f4faeb78b0ad6","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.5.1_1790371703902_0.1873157037427935","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@ada-cx/messaging-bridge","version":"1.5.2","keywords":["ada","ada.cx","messaging","bridge","chat"],"license":"ISC","_id":"@ada-cx/messaging-bridge@1.5.2","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"homepage":"https://docs.ada.cx","dist":{"shasum":"7ac78d8415602164de5d62429752be3fd3be1bcd","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.5.2.tgz","fileCount":22,"integrity":"sha512-fVO+DjiGeGiUI1kqkgGAWGeD+VNpyDiDOexM/r30tO05tO3ZqhzS7WxuBY1HyHDuZFl0fIAHNyvH2wNnKk2cXw==","signatures":[{"sig":"MEYCIQCjhOIyiwiN+73UYEjJUR8rpWzEBxMh24SkbkXVlLFyGQIhALT8xJke7lf5Fz+VAzwXwAeDi7W8KYc/1IRf8cG/fOoM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDaZicJtZUK6Es4E238LtEWyWAITuYo5AWyYiDgcrSk4wIgaA2LYOZ7HMJZxU5RxLm/VNBCobkZ4vRI0x8b/SF16ac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253671},"main":"./dist-npm/npm/index.js","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"425ad78678b329b177df09688b7746d58906d6c5","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/messaging-bridge_1.5.2_1790721098482_0.5709646076043424","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"_id":"@ada-cx/messaging-bridge@1.5.3","dist":{"shasum":"64362774cd474f58078bffdf417c19257f2c9f16","tarball":"https://registry.npmjs.org/@ada-cx/messaging-bridge/-/messaging-bridge-1.5.3.tgz","fileCount":23,"integrity":"sha512-JqXXNVwfVF9opwLZasX54Pxia7/obiZqdg29J7P55B5xH73rkA7Vwk1uRWCyXLElDbTMKnfw5qXcqpKKEbDHeg==","signatures":[{"sig":"MEUCIGNjn4mKf65V5hwyqCKmB/cOnvkZ4BDH2PfE6sBFsAJTAiEAq/W/gDhSjMnKCj30NpSsSdQ4NkD7RXrqQwdA6PlDB4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHB+H0Z285CdCuUfJtJiH7oslwaeZsfcyi8MTHlcyQOQAiEA18o5FQQkyf1+KHAXlIR4ofHZ8FWjPd6bVBbSwe9ylNo="}],"unpackedSize":255397},"main":"./dist-npm/npm/index.js","name":"@ada-cx/messaging-bridge","type":"module","types":"./dist-npm/npm/index.d.ts","module":"./dist-npm/npm/index.js","exports":{".":{"types":"./dist-npm/npm/index.d.ts","default":"./dist-npm/npm/index.js"},"./react":{"types":"./dist-npm/npm/react.d.ts","default":"./dist-npm/npm/react.js"},"./testing":{"types":"./dist-npm/npm/testing.d.ts","default":"./dist-npm/npm/testing.js"}},"gitHead":"8abd4a091cb9edd7704d0de8d5a4f0948f52460c","license":"ISC","scripts":{"lint":"npx biome check","build":"tsc -p tsconfig.json && npm run build:npm && npm run build:internal-types && npm run build:cdn","prepack":"node scripts/finish-npm-package.mjs --verify","build:cdn":"vite build --config vite.cdn.config.ts","build:npm":"vite build --config vite.npm.config.ts && vite build --config vite.npm-testing.config.ts && tsc -p tsconfig.npm.json && node scripts/finish-npm-package.mjs","build:internal-types":"tsc -p tsconfig.internal.json"},"version":"1.5.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"2a48f4e7-bba3-468c-8ac5-3f4d3f258b49"}},"homepage":"https://docs.ada.cx","keywords":["ada","ada.cx","messaging","bridge","chat"],"_npmVersion":"11.6.2","description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","directories":{},"maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"sideEffects":["./dist-npm/npm/index.js","./dist-npm/npm/react.js","./dist-npm/loader-*.js"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"react":["./dist-npm/npm/react.d.ts"],"testing":["./dist-npm/npm/testing.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/messaging-bridge_1.5.3_1790788792748_0.8190238802438778"}}},"time":{"created":"2026-08-23T18:34:12.633Z","modified":"2026-09-30T17:19:53.100Z","1.0.0-setup.0":"2026-08-23T18:34:13.066Z","1.0.0-setup.1":"2026-08-26T22:53:02.744Z","1.0.0":"2026-08-27T17:06:48.670Z","1.1.0":"2026-09-04T18:41:57.148Z","1.2.0":"2026-09-06T01:10:10.349Z","1.3.0":"2026-09-09T20:45:25.407Z","1.3.1":"2026-09-21T21:17:23.839Z","1.3.3":"2026-09-23T18:01:10.374Z","1.4.0":"2026-09-24T14:19:33.866Z","1.5.0":"2026-09-24T20:26:57.396Z","1.5.1":"2026-09-25T21:28:24.016Z","1.5.2":"2026-09-29T22:31:38.637Z","1.5.3":"2026-09-30T17:19:52.874Z"},"license":"ISC","homepage":"https://docs.ada.cx","keywords":["ada","ada.cx","messaging","bridge","chat"],"description":"Types, test mocks, and a thin CDN loader for building a custom app UI on Ada Messaging's bridge contract. The bridge runtime always loads from Ada's CDN.","maintainers":[{"name":"ada-messaging-experience","email":"messaging-experience@ada.support"},{"name":"ada-itsupport","email":"itsupport@ada.support"}],"readme":"# @ada-cx/messaging-bridge\n\nBuild your own chat UI (a \"custom app\") on Ada Messaging's bridge contract.\n\nThis package carries TypeScript types, test mocks, and a thin loader.\n\nAda core stamps its build identifier into your app frame's `window.name`. The loader uses it to load the matching bridge runtime.\n\nYour installed package never contains the runtime. Ada can update runtime security logic through a coordinated core release.\n\n## Requirements\n\n- Your custom app runs inside an iframe that Ada's core frame mounts. The\n  core frame is served from Ada's asset host, and it sits inside the page\n  that embeds the widget. Both origins are in your app's ancestor chain.\n- You point the Web SDK at your app with its `appUrl` setting.\n- Your app's origin must be in your handle's **Allowed websites** list. Add\n  it in your Ada dashboard, under **Channels** > **Chat**. Until the list\n  allows your origin, a configured `appUrl` is dropped with a console\n  warning and Ada's default app mounts (with `appUrlFallback: false` the\n  activation fails instead). An entry that carries a path, query, or\n  fragment does not authorize a custom app. Add the bare origin as its own\n  entry. Local development needs no entry when both your app and the\n  embedding page run on loopback hosts.\n- If your app's responses send no `X-Frame-Options` header and no CSP\n  `frame-ancestors` directive, browsers permit framing, and no server change\n  is needed. If your app restricts framing, `frame-ancestors` must allow\n  Ada's asset hosts and every site origin that embeds the widget:\n\n```\nContent-Security-Policy: frame-ancestors https://messaging-assets.ada.support https://static.ada.support https://your-site.com\n```\n\n  Replace `https://your-site.com` with the origins of the pages that embed\n  the Ada widget. Browsers check `frame-ancestors` against every ancestor\n  frame, so a policy that lists only Ada's hosts blocks your app.\n\n## Quick start\n\nInstall the package:\n\n```bash\nnpm install @ada-cx/messaging-bridge\n```\n\nLoad the runtime, complete the handshake, then render from state:\n\n```ts\nimport { loadMessagingBridge } from \"@ada-cx/messaging-bridge\";\n\nconst bridge = await loadMessagingBridge();\nconst client = bridge.createBridgeClient();\n\n// REQUIRED: send app.initialize within 15 seconds of your frame loading.\n// If the handshake does not arrive, core unmounts your frame.\nclient.sendEvent(\"app.initialize\");\n\n// Subscribe to display-state updates from core.\nconst unsubscribe = client.subscribe(() => {\n  const state = client.getState();\n  renderMessages(state?.[\"chat.messages\"] ?? []);\n});\n\n// Send a user message through the operations layer.\nconst handle = client.operations.sendMessage(\"Hello\");\nconst message = await handle.settled();\n\n// Tear down when your app unmounts.\nunsubscribe();\nclient.destroy();\n```\n\n`loadMessagingBridge()` memoizes the load. Repeated calls return the same\npromise. A failed load is forgotten, so a later call retries.\n\nUse typed state keys through the loaded module:\n\n```ts\nconst botName = client.getState()?.[bridge.STATE.CONFIG_BOT_NAME];\n```\n\n## Operations\n\n`client.operations` provides typed helpers over the raw event contract. Each\nhelper carries the guards, debounces, and correlation logic that Ada's own\napp uses. Prefer them over hand-built `sendEvent` calls.\n\n```ts\n// Correlated send: the handle resolves with the message row.\nconst handle = client.operations.sendMessage(\"Hello\");\nconst message = await handle.settled({ timeoutMs: 10_000 });\n\n// Read tracking: debounced, monotonic, reset per conversation.\nclient.operations.markRead(message.cursor ?? \"\");\n\n// Correlated survey submit.\nconst result = await client.operations\n  .submitCsat({ score: 5 }, { surveyType: \"bot\", conversationId })\n  .settled();\n```\n\nHighlights:\n\n- `sendMessage(body, { secret? })` returns a handle. `settled()` resolves\n  with the message once it appears in `chat.messages`, and rejects when core\n  reports a send error first (rate limit, over-length body, session not\n  ready, dispatch failure) — detected on the `chat.error.seq` advance, so a\n  repeat of the identical error text still rejects. A secret send writes\n  no transcript row, so its handle never resolves. Pass `timeoutMs` or skip\n  `settled()` for secret sends.\n- `submitCapture(value).settled()` reports the server verdict for the\n  active capture field.\n- `checkEndChatEligibility()` resolves with the End Chat survey decision.\n- `endLiveChat()` ends only the live-agent leg. On a bot with\n  `config.features.endLiveChat`, call it — not `skipCsatAndEndChat()` or an\n  `end_chat` `submitCsat()` — when End Chat is confirmed during a live chat\n  (`liveAgent.inLiveChat`), and offer no end-chat survey: api routes the\n  post-agent survey as an inline `live_chat` row once the leg has ended. Once\n  `liveAgent.liveChatEndedInConversation` is true on such a bot, End Chat\n  calls `skipCsatAndEndChat()` directly, with no confirmation or eligibility\n  check.\n- `trackCsatShown(\"live_chat\")` is dropped by core: api records that survey as\n  shown when it routes its row.\n- `markRead(cursor)` debounces 400 ms and keeps a monotonic watermark. Do\n  not reimplement read tracking.\n- `startNewConversation()` applies a 5 second cooldown and returns `false`\n  while cooling down or while `app.conversationStartPending` is true. A pending\n  refusal does not extend the cooldown. `true` means the request was sent.\n- A restart requested while proactive requests are in flight waits for them.\n  Render both restart controls busy from `app.conversationStartPending`\n  (absent means false). Subscribe with `client.subscribeKey` or read React\n  bridge state. A successful proactive keeps its messages and prior transcript;\n  a completed success awaiting conversation delivery can satisfy one restart too.\n  Another explicit restart after completion is a new intent, allowing recovery\n  when no conversation arrives. Without pending work or an unused success awaiting\n  delivery, the normal reset begins immediately.\n  If all fail and the request remains current, Core\n  performs the latest accepted reset once. A newer conversation/session or an\n  accepted user send or retry cancels that wait; rejected sends leave it intact.\n  `resetApp()` still sends while pending.\n  Wait for Core to clear the pending state; it is transient and is not a\n  conversation-start completion acknowledgement.\n- `startFileUpload(file)` retains the `{ file, uploadId }` pair so\n  `retry()` replays exactly it.\n- `notifyComposerChanged()` is payload-free and suppressed in secret mode.\n  Composer text never crosses the frame boundary.\n- Chrome and settings helpers: `close`, `minimize`, `dismissError`,\n  `setLanguage`, `setTheme`, `emailTranscript`, and more. See the\n  `BridgeOperations` type for the full surface.\n\nUse `outage.connectivityLost` as the connectivity signal. Do not substitute\n`navigator.onLine`. It reports false positives on VPN and virtual-adapter\ntransitions.\n\n## Observation\n\n`client.subscribeKey(key, callback)` fires only when one key's value\nchanges. `client.select(selector, callback)` does the same for a derived\nprojection. Both default to `Object.is` equality and accept a custom\n`equals`. Core reuses references for unchanged keys, so identity equality\nis sound for every key except `chat.messages`.\n\n```ts\nclient.subscribeKey(\"chat.isGenerating\", (generating) => {\n  toggleTypingIndicator(generating === true);\n});\n```\n\n## Derivation helpers\n\nThe loaded module exports pure helpers mined from Ada's reference app:\n`messageKey`, `isHistoricalRow`, `findFirstUnread`, `selectUnread`,\n`groupMessages`, `filterDisplayable`, `resolveBotName`,\n`resolveDisplayBotName`, `isAgentTyping`, and `isConnectivityLost`.\n\n`resolveBotName` is the attribution name. Use it for sender labels and\nannouncements. It falls back to the bot handle.\n\n`resolveDisplayBotName` is the display name for your own chrome, such as a\nheader title or a greeting. It is empty when the customer configured no bot\nname, so a handle never reaches the page as a name.\n\n`resolveDisplayBotName` is the one optional helper. The mounting core frame\npicks the runtime build, not your installed package version. A build older than\nthis helper can therefore load. This happens during a rollout, behind an\n`?ada-messaging-version` pin, or after a rollback. Guard the call:\n\n```ts\nconst name = bridge.resolveDisplayBotName?.(state) ?? \"\";\n```\n\n```ts\nconst { messageKey, filterDisplayable, groupMessages } = bridge;\nconst rows = filterDisplayable(messages, state?.[\"chat.isConversationActive\"] ?? false);\nconst grouping = groupMessages(rows);\n```\n\nUse `messageKey` as your render key. Raw message ids change twice: a\nstreaming bubble swaps to its final id, and an optimistic send swaps to its\ndurable id. Keying on the raw id replays animations and breaks unread\nanchors.\n\n### Options\n\n| Option | Default | Purpose |\n| --- | --- | --- |\n| `cdnBase` | `https://messaging-assets.ada.support` | Asset root for matching bridge builds. HTTPS is required, except for loopback HTTP. An explicit value disables automatic fallback. |\n\nThe default root is preferred for production.\nFor production pages whose CSP already allows `static.ada.support`, use\n`cdnBase: \"https://static.ada.support/messaging/\"`.\nBoth the root and `/react` entries export this supported production root as `FALLBACK_CDN_BASE`.\nAda can also provide another asset root for staging validation.\n\nWithout `cdnBase`, the loader retries once from the static root when the default import fails, including CSP and network failures.\nThe retry preserves the mounting core's build identifier and `bridge/bridge.js` path.\nAn explicit `cdnBase` disables automatic fallback.\nModule-invalid and validation errors retain their original codes and messages.\nThe `dev` marker still requires a loopback `cdnBase`.\nIf both imports fail, `bridge_import_failed` names both attempted URLs.\n\nAfter a successful fallback, the loader logs one warning per page, without debug logging.\nThe warning includes the original error as its second console argument.\nA `TypeError` from the default import produces the fetch-failure warning:\n\n```text\n[Ada] Loaded the Messaging bridge from https://static.ada.support/messaging/ because the default root https://messaging-assets.ada.support/ was blocked or unavailable. Add https://messaging-assets.ada.support to script-src, connect-src and frame-src, or pass cdnBase: \"https://static.ada.support/messaging/\".\n```\n\nFor a CSP block, update your host's policy as shown in the fetch-failure warning.\n\nOther errors produce the evaluation-failure warning:\n\n```text\n[Ada] Loaded the Messaging bridge from https://static.ada.support/messaging/ because the module at https://messaging-assets.ada.support/<build identifier>/bridge/bridge.js failed to evaluate (Error: boom). This is an Ada-side problem, not your host's CSP. Report it to Ada.\n```\n\nFor an evaluation-failure warning, report the original error to Ada.\nNetwork failures also produce the fetch-failure warning.\nA module that throws `TypeError` during evaluation also produces the fetch-failure warning, so the classification does not prove a CSP block.\n\nSuccessful loads from the requested root produce no fallback warning.\n\n### Frame-only asset URL resolution\n\n`resolveBridgeCdnUrl()` reports the current frame's bridge asset URL under the default or explicitly configured root.\nIt uses the same validation as `loadMessagingBridge()` but does not report the root used by a fallback load.\n\nThis helper is frame-only. It throws a `MessagingBridgeLoadError` outside an Ada-mounted custom app frame.\nCall it after your app starts inside that frame. Do not evaluate it at module scope in code that also runs elsewhere.\n\nErrors: `loadMessagingBridge` rejects with a `MessagingBridgeLoadError`. Its\n`code` property identifies the failure:\n\n| Code | Meaning |\n| --- | --- |\n| `invalid_cdn_base` | The `cdnBase` option violates the HTTPS or loopback HTTP policy. |\n| `missing_build_sha` | The frame's `window.name` carries no core build marker, or the mounting core predates build-marker delivery. |\n| `invalid_build_sha` | The frame-name marker matches no accepted build identifier form. |\n| `dev_marker_not_loopback` | The frame uses the `dev` marker with a non-loopback asset host. |\n| `bridge_import_failed` | The asset failed to load (network, CSP, 404). |\n| `bridge_module_invalid` | The loaded module is not an Ada bridge build. |\n\nIf both imports fail, `cause` holds the default-root typed error and readonly `fallbackCause` holds the fallback typed error.\nBoth errors retain their original cause chains.\nAn invalid fallback module uses the same error properties and preserves `bridge_module_invalid` and the fallback error message.\n\n### Matching the core build\n\nAda core mounts your frame with `window.name` set to `ada-custom-app:<build identifier>` before your app code runs. Your URL and its fragment mount untouched, so hash routes keep working.\n\n| Marker | Meaning | Resolved asset |\n| --- | --- | --- |\n| A bare 40-character hexadecimal SHA | An immutable production build. | `<cdnBase>/<sha>/bridge/bridge.js` |\n| Lowercase `pr-<N>` | An Ada-internal preview build. | `<cdnBase>/pr-<N>/bridge/bridge.js` |\n| `dev` | An Ada-internal local core build. Customer pages never receive this marker. | `<cdnBase>/bridge/bridge.js` on loopback only. |\n\nThe loader accepts only these marker shapes. It never accepts a URL or path from the frame name.\n\nThe loader snapshots `window.name` when your app first evaluates the package, through either entry: `@ada-cx/messaging-bridge` or `@ada-cx/messaging-bridge/react`. Keep that import in a module your page evaluates at startup. A route-level code split evaluates too late. Code that runs first, for example a library that uses `window.name`, could overwrite the name. If the route that renders `AdaBridgeProvider` is lazily loaded, add a bare `import \"@ada-cx/messaging-bridge\";` to your entry module. The loader keeps the snapshot value if code overwrites `window.name` later.\n\nDo not persist or replay the frame-name marker. Core supplies the authoritative value for every frame load.\n\nDo not set or change `window.name`. The loader fails closed when your page runs outside an Ada-mounted custom app frame.\n\nThe `dev` marker and PR preview aliases are Ada-internal workflows. Local Ada core builds stamp `ada-custom-app:dev`, which works only with a loopback `cdnBase`. An Ada preview core selects its matching preview bridge automatically. You do not need a `cdnBase` override for a joint validation when the page loads `sdk.js` from the production asset root. A preview alias against an asset host that lacks the preview fails closed.\n\n## React\n\nThe `./react` entry provides a provider and hooks. They delegate to a\n`BridgeClient` instance. They contain no runtime logic of their own.\n\nThe simplest path handles loading, the `app.initialize` handshake, and\nteardown for you:\n\n```tsx\nimport { createBridgeProvider, useBridgeState } from \"@ada-cx/messaging-bridge/react\";\n\nconst AdaBridgeProvider = createBridgeProvider();\n\nfunction Root() {\n  return (\n    <AdaBridgeProvider fallback={<Spinner />}>\n      <MyChatUi />\n    </AdaBridgeProvider>\n  );\n}\n\nfunction MyChatUi() {\n  const state = useBridgeState();\n  return <MessageList messages={state?.[\"chat.messages\"] ?? []} />;\n}\n```\n\nIf your app lazily loads the route that renders `AdaBridgeProvider`, add a\nbare `import \"@ada-cx/messaging-bridge\";` to your entry module. The loader\nthen snapshots the frame name at startup, before other code can overwrite\n`window.name`. A statically imported `createBridgeProvider` already evaluates\nthe loader through a used binding; the bare import matters only when that\nimport itself lives in a lazily loaded chunk.\n\nThe provider accepts two more props for load failures. `errorFallback`\nrenders when the runtime fails to load. `onError` receives the\n`MessagingBridgeLoadError`. Without them, the provider logs the error and\nkeeps rendering `fallback`.\n\nTo own the lifecycle yourself, pass a client you created:\n\n```tsx\nimport { BridgeProvider } from \"@ada-cx/messaging-bridge/react\";\n\n<BridgeProvider client={client}>\n  <MyChatUi />\n</BridgeProvider>\n```\n\nWith an injected client, you send `app.initialize` and call `destroy()`\nyourself.\n\nHooks: `useBridgeClient()`, `useBridgeState()`, and `useBridgeStateKey(key)`.\n`useBridgeStateKey` re-renders only when its key's value changes.\n`useBridgeState` re-renders on every state update. Reach the operations\nlayer through `useBridgeClient().operations`.\n\n## Testing\n\nThe `./testing` entry provides a scriptable in-memory client for unit tests.\nIt performs no postMessage and no network access.\n\n```ts\nimport { createMockBridgeClient } from \"@ada-cx/messaging-bridge/testing\";\n\nconst mock = createMockBridgeClient();\nrender(<BridgeProvider client={mock}><MyChatUi /></BridgeProvider>);\n\nmock.updateState({ \"chat.isSending\": true });\nexpect(mock.sentEvents).toContainEqual({\n  event: \"chat.message.send\",\n  payload: expect.objectContaining({ body: \"Hello\" }),\n});\n```\n\nMock helpers: `setState`, `updateState`, `sentEvents`, `clearSentEvents`,\n`subscriberCount`, and `destroyed`.\n\nThe mock implements the full client surface, `operations` included. Every\noperation records its events in `sentEvents`. A correlated handle resolves\nwhen your test scripts the answering state change:\n\n```ts\nconst handle = mock.operations.sendMessage(\"Hello\");\nmock.updateState({\n  \"chat.messages\": [\n    { type: \"text\", id: \"m1\", sender: \"user\", timestamp: 1,\n      body: \"Hello\", clientKey: handle.tempMessageUuid },\n  ],\n});\nawait handle.settled();\n```\n\n## Contract notes\n\n- `AppDisplayState` is the full state shape core publishes. `AppEvents` maps\n  each sendable event to its payload type.\n- `app.initialize` is mandatory. Send it within 15 seconds of frame load.\n- The runtime derives the core origin from `document.referrer`, or locks it\n  on the first valid state message. It rejects state from other origins.\n- In Ada's custom-app frame, the first `app.initialize` hands core a\n  `MessagePort`. All later state and events ride that port. The port is\n  pinned to your first document, so your app must not navigate or reload its\n  own frame. A navigation disconnects the bridge permanently.\n- The runtime detects the custom-app frame by the frame name core sets\n  (`ada-custom-app:<build identifier>`), which also selects the bridge\n  build the loader imports. Do not change `window.name` inside your app\n  document.\n- The custom-app frame keeps your real origin, so your own cookies and\n  storage work inside it. Browsers partition third-party storage by the\n  embedding site. Cookies need `Partitioned; Secure; SameSite=None`.\n- The custom-app frame needs `document.referrer` to target the handshake.\n  Core provides the referrer by default. If a browser extension or policy\n  strips the Referer header, the handshake cannot send. The runtime logs an\n  error, and core falls back to Ada's default app after 15 seconds.\n\n## Support\n\nThis package supports Ada's custom app program. Open issues through your Ada\nsupport contact.\n","readmeFilename":"README.md"}