{"_id":"@avibra/pulse-web-sdk","_rev":"14-3672acf257ed580baf0b93ba5c44b9bf","name":"@avibra/pulse-web-sdk","dist-tags":{"latest":"1.1.12"},"versions":{"1.0.1":{"name":"@avibra/pulse-web-sdk","version":"1.0.1","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.0.1","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"83a33c964dc7187d3b737f855d86a335a97d542c","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.0.1.tgz","fileCount":15,"integrity":"sha512-+VwtQvRYAn/XhvyQmPPt06VB06BMPQkeH2RR1cHzyCCYCmhk8hqyR+kwam+WDbODl1t9MQL7PoTo3XGFzPLD2Q==","signatures":[{"sig":"MEYCIQDEsgeH0MaRcj2erQzxVBa6lLvFhxg5m3ofut4mcBdOkgIhAJAfgDThFKF5wqSusY9ynPy3QYPYD8yDq3OtTPPybxEY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6255981},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"ca76e9036506b8159a7308a0b9f920c9014c838c","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@google/genai":"^1.44.0","@avibra/pulse-core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.0.1_1776262975155_0.874300404181156","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@avibra/pulse-web-sdk","version":"1.1.0","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.0","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"b09af89d2d201a897f71b6c3c47116b2c4041c26","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.0.tgz","fileCount":15,"integrity":"sha512-FKEobCy8izBE89QIG7ZcM/JILtYx1y+SscRQb+vXvd5C3vbuq1bfQoN5mn+7VPYML02IjZIpZhBHx2GfCK1/oQ==","signatures":[{"sig":"MEQCIE8sgMcd3/DQFJ+8ApWSW8tuphgcb6A9/Nde50Ql2/TWAiB/RUVsJyjWp3lKwQpb3P0jg+dky50GjBtvidJAwRQfdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6255372},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"859792fe86051e78dfa7b634ac39adf1ca77106d","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@google/genai":"^1.44.0","@avibra/pulse-core":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.0_1776409843386_0.45954892076317","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@avibra/pulse-web-sdk","version":"1.1.1","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.1","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"66bff86026e257145d405eb22a4cc8d5e25ecdd1","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.1.tgz","fileCount":16,"integrity":"sha512-x73iUDF6UfkUwCqnP2ue4vlOR4jg6foizNZN4IUGIOO+evUnr3GyJxBX8f0Qu61xH+wC0srOviumC+tgEnkx/A==","signatures":[{"sig":"MEUCIFlGcapZZu+lmOhFcwivsdvK1hnw3B51+oi16fOwm39cAiEAi089R8+EwZSPbi8q80QlppfJ6ptaaRXKcMrIO3xEWSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7366672},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"db10e1fce005733a9135c27e9a915f70407ea10f","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.1_1777292851581_0.40532555012818494","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@avibra/pulse-web-sdk","version":"1.1.2","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.2","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"8c2c29a7a02c4a33d8718e9ce98648838bee2884","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.2.tgz","fileCount":16,"integrity":"sha512-D1N8EGX6RTSTcIHRUtXwSN8EpsntIiJOu8HpaD8pa/6n7daIOPP6wRsTVwEbS3rx7EaHKgerryCfYYIzQH2I+A==","signatures":[{"sig":"MEUCIQD6uxehXxIE2R/mmYaQQXKYxS0Hs5bzAhAGqerwxnIx3QIgXudeHH9rvd44ThK+eG+4k6w6DA9muTB8dItR915kRt0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7366672},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"db10e1fce005733a9135c27e9a915f70407ea10f","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.2_1777292901480_0.11841592944559953","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@avibra/pulse-web-sdk","version":"1.1.3","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.3","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"85f629f978bff78f51380aef38fc6786c1c69895","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.3.tgz","fileCount":16,"integrity":"sha512-I0Dw1gYxtiQKLHGpXSBMSVr1MdNDYuEneNjYtYXAv/eRLsIfhezxvO4S+AsE5HMqJFy9ytDxqU7C317MDX1Y2Q==","signatures":[{"sig":"MEYCIQDPAWZr74/vwJICOCtIDVLj6kY/ptngWCkYvT4FFZQDHAIhAK1oIgaigy64NUVperiVmpNOIGwIHdMnPkxkKpl901i1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7369272},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"b3c2cc7439e2fe8a9fb8e4234fd7790fc26a9611","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.3_1777354637050_0.06169047693196461","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@avibra/pulse-web-sdk","version":"1.1.4","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.4","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"dc278258316bb557d3841dab7b03b8f4dbef9ecf","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.4.tgz","fileCount":16,"integrity":"sha512-ucN6Q94zw3UcJHMuiq3ecDg79rRR9j7KIEfaZC/7Md7cEeznMmXfDblPfwuDbAHv9oimp3jSM4XiAuX0tbZ4bQ==","signatures":[{"sig":"MEYCIQChz9Vat+ZvZrGlD2IR3ViRE3hv9nJ3XLi+5hXBRX5sRwIhAMYAWEultD6rcz8AnKVx62Y8hgkSKDu6g1dhW9/wXiGN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7370158},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"b3c2cc7439e2fe8a9fb8e4234fd7790fc26a9611","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.4_1777375727681_0.6074050640644719","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@avibra/pulse-web-sdk","version":"1.1.5","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.5","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"b80f464535c32e642505ce69a8b0463fa69b98e3","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.5.tgz","fileCount":16,"integrity":"sha512-Xjo61vEYtk60T5Z0xZG21S6pjIQBP6KNaFR2X0bf0ftu/AtzyKHYwWwbf4SZuob4gI4Mx+rCIGQR91x6f6YLMQ==","signatures":[{"sig":"MEUCIEV40kay/ZDofH08H6RKBiBQdcEnmf04ED6pUAniDmT7AiEA8c1/8SqENVaJroRazoSfNzySC55W1NR2pjiYzQncD9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7372532},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"543c7fbd08f95bf1fb586dc54f2fe6264a15c363","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.5_1778218913193_0.8248191945911194","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@avibra/pulse-web-sdk","version":"1.1.6","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.6","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"c8bee5db454f46f1f4952d2a95161688915072c5","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.6.tgz","fileCount":16,"integrity":"sha512-o4CZQaqVDzZrp1rK4FdZr7r4plqXqhcYLd4op7T9NQZdCUnM96IB4Ii/LBiKit6a10RLAJp3TT3syX4FsgQ8MA==","signatures":[{"sig":"MEQCIAwHK/AW5JQIyccOV8wJo+QaMqiFDrs5j+b5A6rvEk5BAiBQai/ugbQEfyyYZTZR5T96RfH9mf4OYOH35+Y4kObXcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7374953},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"3885c62bd75e873709ad8e38801ed9aacdae64bc","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.6_1778821209231_0.9526992339312608","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@avibra/pulse-web-sdk","version":"1.1.7","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.7","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"dae258d89b8fe80b43d48e1c8a76e528c61b4f43","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.7.tgz","fileCount":16,"integrity":"sha512-k5XrJ/6RqVoEvBZUUUBtNRQSgGTwDrjNYUYMbYInVwLKvhDQth0QywVXTly2zPW0MqkXmtQTU5KTHVQ4PiIgNQ==","signatures":[{"sig":"MEUCIHjsLCL97p52GloN7LvMJH64vG6BXSLoecXtfuxDkH8bAiEAvW6IkUS7rxajn0dka1P0yxdYlfpoHGjxSCgUuGMh1Zs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7446796},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"29d5a71d4d878034438099ead82256e6bd862ef8","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.7_1779335314112_0.6668314535874671","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@avibra/pulse-web-sdk","version":"1.1.8","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.8","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"fc0b0f723383b3d18767d48231ae3a23bb2df621","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.8.tgz","fileCount":16,"integrity":"sha512-MLkk6eqiw9gMopSbu3OYhbjSmBa1lsCgOWLYbDy1YzEH3v8YDErBUKMlADf5Wy9qlLwvf+Zvoo/b1th5CkiLYA==","signatures":[{"sig":"MEQCIGyj4FAr8aLYVXXChq5v1lQOT73AHsazZ2OFDdqTQ+WKAiB3om90nLrz9XxrmKmy5+4QsKtNs2BYY0POeapioC9tmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7447360},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"0d8d42fbc485de3d8ac705a6574d9a7c629c7f80","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.8_1779348845568_0.08821524506516565","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@avibra/pulse-web-sdk","version":"1.1.9","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.9","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"63fd8a9ff7dbbbe9e9ea0f304d6b4e2320328a7a","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.9.tgz","fileCount":16,"integrity":"sha512-9Lhi9AjMV6HQm3wQDrKzYFTJ5pimOCnrKB/9CPQi/h7MHkLY23MFGVlJdt+d7Dyv5Q67DxvQvEKAQhE21PfOUg==","signatures":[{"sig":"MEUCIAgk/ZKWvy3RL+nf10iJZGgasbV6hFyl3kVB0GSDvWBLAiEAxkrBq6WyXzeYkxa6WkXCiZRwZG2XF/EYrTM+h1ArdOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7479948},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"86ce975f8b8d5b413a3de7764beed09b0206d70b","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.9_1779858957601_0.8106497744655612","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"@avibra/pulse-web-sdk","version":"1.1.10","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.10","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"fdcbae3e794101031364f28dbd240c67fd10953c","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.10.tgz","fileCount":16,"integrity":"sha512-7EUWBznztgHhxii2ncWlAqnaieUMMbJ5bkt4jk1QEjMaH+6u7l+gBDj2ffvDBa10wI0gYJ9x/4HJzSj9GAriTA==","signatures":[{"sig":"MEUCIAq8lwOFadoJ2BFWU6kOX3AnCOWpkbAXVVVi1C0jU0DpAiEAsMQYRfDAX5ShB40N5VbtdZpMA+k5CMJ6MtZxCZTtw2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7488316},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"c66fac7b4739604f7d5513c39156e677f2b1a4dd","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.10_1783586818492_0.6728299949314798","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"@avibra/pulse-web-sdk","version":"1.1.11","keywords":["voice","feedback","survey","AI","SDK","widget"],"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","_id":"@avibra/pulse-web-sdk@1.1.11","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"dist":{"shasum":"611f2b4c2f2db47800f2b91d130b90478e3f1caf","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.11.tgz","fileCount":16,"integrity":"sha512-+SE4HqtCEpF35B6rfXYnOZdW4Wk/laDjDxqvQAKZoisgweHJ/+tL7u/HKXtPM8bPsX+qcN4NiH+2sudJ1mEMzA==","signatures":[{"sig":"MEUCIQCXjkWTPabEY5gvux5N0lxJBEA/DcSaB7moZUXCs87lAQIgBb59Xw4IR0+CQZTP1872uveKzkagQwzxqsOimY+CIgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7488741},"jest":{"testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"setupFiles":["./src/__tests__/setup.ts"],"testEnvironment":"jsdom","moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"]},"main":"dist/pulse.umd.js","types":"dist/types/sdk/src/index.d.ts","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","gitHead":"b3d63ada1edc04e3b3104069ee2007476a89b623","scripts":{"lint":"eslint src --ext .ts","test":"jest --coverage","build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:watch":"rollup -c --watch","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"_npmVersion":"11.12.1","description":"Pulse — AI voice feedback SDK for third-party web applications","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ogl":"^1.0.11","@google/genai":"^1.50.0","@avibra/pulse-core":"^1.1.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tslib":"^2.6.0","eslint":"^8.0.0","rollup":"^4.0.0","ts-jest":"^29.0.0","typescript":"^5.3.0","@types/jest":"^29.0.0","rollup-plugin-dts":"^6.0.0","@rollup/plugin-terser":"^0.4.4","rollup-plugin-esbuild":"^6.2.1","jest-environment-jsdom":"^29.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@typescript-eslint/parser":"^6.0.0","@rollup/plugin-node-resolve":"^15.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pulse-web-sdk_1.1.11_1785338802168_0.2686032668322318","host":"s3://npm-registry-packages-npm-production"}},"1.1.12":{"name":"@avibra/pulse-web-sdk","version":"1.1.12","description":"Pulse — AI voice feedback SDK for third-party web applications","author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","keywords":["voice","feedback","survey","AI","SDK","widget"],"main":"dist/pulse.umd.js","module":"dist/pulse.esm.js","browser":"dist/pulse.min.js","types":"dist/types/sdk/src/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"tsc --emitDeclarationOnly --declarationDir dist/types --declaration && rollup -c","build:watch":"rollup -c --watch","test":"jest --coverage","test:watch":"jest --watch","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build && npm test"},"dependencies":{"@avibra/pulse-core":"^1.1.10","@google/genai":"^1.50.0","ogl":"^1.0.11"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-node-resolve":"^15.0.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.0.0","@types/jest":"^29.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.0.0","jest-environment-jsdom":"^29.0.0","rollup":"^4.0.0","rollup-plugin-dts":"^6.0.0","rollup-plugin-esbuild":"^6.2.1","ts-jest":"^29.0.0","tslib":"^2.6.0","typescript":"^5.3.0"},"jest":{"testEnvironment":"jsdom","testMatch":["**/src/__tests__/**/*.test.ts"],"transform":{"^.+\\.tsx?$":["ts-jest",{"tsconfig":"tsconfig.test.json"}]},"moduleNameMapper":{"^@avibra/pulse-core$":"<rootDir>/../core/src/index.ts"},"collectCoverageFrom":["src/**/*.ts","!src/__tests__/**"],"setupFiles":["./src/__tests__/setup.ts"]},"gitHead":"a89e81cbb797f7448472670b7f82258c8d09846b","_id":"@avibra/pulse-web-sdk@1.1.12","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-qoELuVrdmNysYQgQz/BZb8+s2FgnoVWwmZujQ1AWEC2OEN2K/3lfXweQ8VZnsaBt6KW6cIkWwHWhh2eEyCP9Hg==","shasum":"523da39aca6d5860485c37a85ed5cb0297447372","tarball":"https://registry.npmjs.org/@avibra/pulse-web-sdk/-/pulse-web-sdk-1.1.12.tgz","fileCount":16,"unpackedSize":7484682,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIExIHHSZVCc9/0/1GoSdp2ZEtbH4UPq+JIrH0yprYBfIAiEA6D+7cYShCIww1Dw4gEu8e0tPAd0HaAj4+oaXCPSrkmQ="}]},"_npmUser":{"name":"avibra","email":"admin@avibra.com"},"directories":{},"maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pulse-web-sdk_1.1.12_1785500885669_0.18537237833196185"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-15T14:22:55.038Z","modified":"2026-07-31T12:28:06.111Z","1.0.1":"2026-04-15T14:22:55.344Z","1.1.0":"2026-04-17T07:10:43.601Z","1.1.1":"2026-04-27T12:27:31.808Z","1.1.2":"2026-04-27T12:28:21.679Z","1.1.3":"2026-04-28T05:37:17.266Z","1.1.4":"2026-04-28T11:28:47.892Z","1.1.5":"2026-05-08T05:41:53.413Z","1.1.6":"2026-05-15T05:00:09.493Z","1.1.7":"2026-05-21T03:48:34.355Z","1.1.8":"2026-05-21T07:34:05.773Z","1.1.9":"2026-05-27T05:15:57.784Z","1.1.10":"2026-07-09T08:46:58.676Z","1.1.11":"2026-07-29T15:26:42.353Z","1.1.12":"2026-07-31T12:28:05.946Z"},"author":{"name":"Pulse Engineering","email":"engineering@pulse.io"},"license":"MIT","keywords":["voice","feedback","survey","AI","SDK","widget"],"description":"Pulse — AI voice feedback SDK for third-party web applications","maintainers":[{"name":"avibra","email":"admin@avibra.com"}],"readme":"# Pulse SDK — AI-Powered Voice Feedback\n\n> Embed AI-powered voice feedback conversations into any web application in minutes.\n\n[![npm version](https://img.shields.io/badge/npm-v1.0.0-blue)](https://www.npmjs.com/package/@avibra/pulse-web-sdk)\n[![gzip size](https://img.shields.io/badge/gzip-<50KB-brightgreen)]()\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue)]()\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)]()\n\n---\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Quick Start](#quick-start)\n- [API Reference](#api-reference)\n- [Theme Customization](#theme-customization)\n- [Analytics Platform Integration](#analytics-platform-integration)\n- [Security Model](#security-model)\n- [Performance](#performance)\n- [Backend API Contract](#backend-api-contract)\n- [Events Reference](#events-reference)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Overview\n\nPulse is an AI-powered voice feedback platform. When a user performs a significant action — cancels a subscription, completes onboarding, or churns — Pulse surfaces a conversational voice prompt so they can tell you *why* in their own words.\n\n\n**Two integration models:**\n\n| Model | How it works |\n|---|---|\n| **SDK Tracking** | Call `Pulse.trackEvent()` — SDK sends event to Pulse backend which evaluates triggers |\n| **Analytics Webhook** | Mixpanel / Segment / Braze forwards events to Pulse backend; SDK polls for pending triggers |\n\n---\n\n## Quick Start\n\n### CDN (Recommended for most partners)\n\n```html\n<!-- Add before </body> -->\n<script src=\"https://cdn.avibra.com/sdk/v1/pulse.min.js\"></script>\n<script>\n  Pulse.init({\n    partnerId: 'YOUR_PARTNER_ID',\n    userId: currentUser.id,\n    theme: {\n      primary: '#4F46E5',\n      onPrimary: '#FFFFFF',\n      background: '#FFFFFF',\n      surface: '#F9FAFB',\n      accent: '#22C55E',\n      danger: '#EF4444',\n    },\n  });\n</script>\n```\n\n### npm / ESM\n\n```bash\nnpm install @avibra/pulse-web-sdk\n```\n\n```ts\nimport { Pulse } from '@avibra/pulse-web-sdk';\n\nPulse.init({\n  partnerId: 'YOUR_PARTNER_ID',\n  userId: currentUser.id,\n});\n```\n\n---\n\n## API Reference\n\n### `Pulse.init(config)`\n\nInitializes the SDK. **Must be called once** before any other method.\n\n```ts\nPulse.init({\n  partnerId: 'app_abc123',          // Required — from Pulse dashboard\n  userId: 'user_xyz',               // Required — your user's unique ID\n  apiKey: 'pk_live_...',            // Optional — sent as X-Api-Key on all requests\n  mode: 'prod',                     // Optional — 'staging' | 'st2' | 'prod' (default: 'prod')\n  baseUrl: 'https://...',           // Optional — override API base URL (takes precedence over mode)\n  theme: {                          // Optional — see Theme Customization\n    primary: '#4F46E5',\n    onPrimary: '#FFFFFF',\n    background: '#FFFFFF',\n    surface: '#F9FAFB',\n    accent: '#22C55E',\n    danger: '#EF4444',\n    borderRadius: 16,\n    fontFamily: \"'Inter', sans-serif\",\n  },\n  debug: false,                     // Optional — enable console logging\n  pollIntervalMs: 30000,            // Optional — trigger poll interval (default 30s)\n  maxOfflineQueueSize: 100,         // Optional — offline buffer size\n  retry: {\n    maxAttempts: 3,                 // Optional — retry attempts on failure\n    baseDelayMs: 500,               // Optional — initial backoff delay\n    maxDelayMs: 10000,              // Optional — max backoff cap\n  },\n});\n```\n\n#### Environments\n\n| `mode` | Base URL |\n|---|---|\n| `prod` (default) | `https://pulse.avibra.com/api/v1` |\n| `staging` | `https://pulse.avibra.com/staging/api/v1` |\n| `st2` | `https://pulse.avibra.com/st2/api/v1` |\n\n> If `baseUrl` is also provided, it takes precedence over `mode`.\n\n---\n\n### `Pulse.trackEvent(name, properties?)`\n\nTrack a user action. The SDK sends this to the Pulse backend which evaluates your trigger rules. If a survey is triggered, the widget appears automatically.\n\n```ts\n// On account close button click:\nPulse.trackEvent('ACCOUNT_CLOSE_CLICKED', {\n  plan: 'enterprise',\n  tenure_days: 365,\n});\n\n// On feature toggle:\nPulse.trackEvent('FEATURE_DISABLED', { feature: 'two-factor-auth' });\n```\n\n**Built-in protections:**\n- Max **100 events/minute** (sliding window rate limit)\n- **500ms debounce** per event name (prevents double-fires)\n- Fire-and-forget (never blocks your UI thread)\n\n---\n\n### `Pulse.identifyUser(payload)`\n\nAssociate the current user with profile attributes. Call after login or when user context changes.\n\n```ts\nPulse.identifyUser({\n  first_name: 'Jane',\n  last_name: 'Doe',\n  email: 'jane@acme.com',\n  attributes: {\n    company: 'Acme Corp',\n    employee_count: 500,\n    region: 'EMEA',\n  },\n});\n```\n\n---\n\n### `Pulse.startVoiceSurvey(signalId)`\n\nProgrammatically launch a voice survey within the widget. Useful for testing or custom trigger logic.\n\n```ts\nbutton.addEventListener('click', async () => {\n  await Pulse.startVoiceSurvey('signal_churn_intent');\n});\n```\n\n---\n\n### `Pulse.startCall(config)`\n\nLaunch a standalone voice call session — no widget, no trigger polling. Designed for dedicated call pages (e.g. `connect-pulse.avibra.com`).\n\n```ts\nPulse.startCall({\n  partnerId: 'app_abc123',   // Required\n  userId: 'user_xyz',        // Required\n  signalId: 'signal_123',    // Required\n  mode: 'prod',              // Optional — 'staging' | 'st2' | 'prod'\n  apiKey: 'pk_live_...',     // Optional\n  theme: { ... },            // Optional\n  debug: false,              // Optional\n});\n```\n\n**Flow:** Shows a loading screen while fetching signal details, then transitions directly to the ringing screen. If the signal fetch fails, an error screen is shown.\n\n**Typical usage — reading params from the URL hash:**\n\n```html\n<script src=\"https://cdn.avibra.com/sdk/v1/pulse.min.js\"></script>\n<script>\n  const params = new URLSearchParams(location.hash.slice(1));\n  Pulse.startCall({\n    partnerId: params.get('pid'),\n    userId:    params.get('uid'),\n    signalId:  params.get('sid'),\n    mode:      params.get('m') || 'prod',\n  });\n</script>\n```\n\nURL format: `https://connect-pulse.avibra.com/#pid=abc&uid=xyz&sid=signal_123&m=prod`\n\n---\n\n### `Pulse.destroy()`\n\nTear down the SDK completely. Removes the widget, stops polling, and clears all intervals.\n\n```ts\n// On logout, user switch, or SPA route teardown:\nPulse.destroy();\n```\n\n---\n\n## Theme Customization\n\nPulse uses **CSS design tokens** inside a Shadow DOM to guarantee zero conflicts with your application styles.\n\n### Available Tokens\n\n| Token | CSS Variable | Description |\n|---|---|---|\n| `primary` | `--pulse-primary` | Brand color for buttons, waveform |\n| `onPrimary` | `--pulse-on-primary` | Text/icon color on primary backgrounds |\n| `background` | `--pulse-background` | Widget outer background |\n| `surface` | `--pulse-surface` | Inner card/surface color |\n| `accent` | `--pulse-accent` | Success states, active indicators |\n| `danger` | `--pulse-danger` | End-call, destructive actions |\n| `borderRadius` | `--pulse-border-radius` | Widget corner rounding (px) |\n| `fontFamily` | `--pulse-font-family` | Font family override |\n\n### Example: Dark Theme\n\n```ts\nPulse.init({\n  partnerId: 'app_123',\n  userId: 'user_123',\n  theme: {\n    primary: '#6366F1',\n    onPrimary: '#FFFFFF',\n    background: '#1E1E2E',\n    surface: '#2D2D44',\n    accent: '#10B981',\n    danger: '#F43F5E',\n    borderRadius: 20,\n    fontFamily: \"'Inter', sans-serif\",\n  },\n});\n```\n\n### Example: Corporate / Neutral Theme\n\n```ts\ntheme: {\n  primary: '#0F172A',\n  onPrimary: '#FFFFFF',\n  background: '#FAFAFA',\n  surface: '#F1F5F9',\n  accent: '#0EA5E9',\n  danger: '#DC2626',\n}\n```\n\n---\n\n## Analytics Platform Integration\n\nIf you already use Mixpanel, Braze, or Segment, you don't need to call `Pulse.trackEvent()` at all.\n\n### Setup Steps\n\n1. **Configure a webhook** in your analytics platform to forward events to:\n   ```\n   POST https://pulse.avibra.com/api/v1/webhooks/segment   # Segment\n   POST https://pulse.avibra.com/api/v1/webhooks/mixpanel  # Mixpanel\n   POST https://pulse.avibra.com/api/v1/webhooks/braze     # Braze\n   ```\n\n2. **Include the Pulse SDK** in your app (init only, no tracking):\n   ```ts\n   Pulse.init({ partnerId: 'YOUR_PARTNER_ID', userId: currentUser.id });\n   // SDK will poll GET /triggers every 30s and show widget when a trigger fires\n   ```\n\n3. **Set trigger rules** in the Pulse dashboard linking your event names to surveys.\n\n---\n\n## Security Model\n\n### API Key Authentication\n\nWhen `apiKey` is provided, it is sent on every outbound request as the `X-Api-Key` header.\n\nHeaders attached to every request:\n- `X-Pulse-Partner-Id` — your application ID\n- `X-Pulse-Nonce` — random 16-byte hex nonce (replay protection)\n- `X-Pulse-Timestamp` — ISO 8601 timestamp\n- `X-Api-Key` — your API key (when `apiKey` is set)\n\n> ⚠️ **Important:** Treat your `apiKey` as a secret. Avoid hardcoding it in publicly accessible source code. For production web apps, serve it from an authenticated backend endpoint.\n\n### Shadow DOM Isolation\n\nThe Pulse widget uses `attachShadow({ mode: 'closed' })`. External JavaScript **cannot** access the widget's internals, preventing CSS injection or DOM tampering.\n\n---\n\n## Performance\n\n| Metric | Target | How achieved |\n|---|---|---|\n| Bundle size (gzipped) | < 50KB | VoiceSessionManager lazy-loaded via `import()` |\n| Init time | < 100ms | Synchronous module setup, async API calls |\n| Main thread blocking | None | All API calls are `fire-and-forget` |\n| Offline resilience | 100 events buffered | `OfflineQueue` with localStorage + reconnect drain |\n\n---\n\n## Backend API Contract\n\n| Method | Endpoint | Description |\n|---|---|---|\n| `POST` | `/users/track` | Track a user event |\n| `POST` | `/identify` | Update user profile |\n| `GET` | `/triggers?userId=` | Check for pending survey trigger |\n| `POST` | `/voice/session/start` | Start a voice survey session |\n| `POST` | `/voice/session/audio` | Send audio chunk (multipart/form-data) |\n\nAll endpoints return:\n```json\n{ \"success\": true, \"data\": { ... } }\n// or\n{ \"success\": false, \"error\": { \"code\": \"UNAUTHORIZED\", \"message\": \"...\" } }\n```\n\n---\n\n## Events Reference\n\nListen to Pulse widget events on the `document`:\n\n```ts\ndocument.addEventListener('pulse:prompt-shown', (e) => {\n  console.log('Prompt shown for survey:', e.detail.signalId);\n});\n\ndocument.addEventListener('pulse:survey-accepted', (e) => {\n  // User clicked \"Yes, Let's Go\"\n  analytics.track('Pulse Survey Accepted', { signalId: e.detail.signalId });\n});\n\ndocument.addEventListener('pulse:survey-declined', (e) => {\n  // User clicked \"Maybe Later\"\n});\n\ndocument.addEventListener('pulse:session-completed', (e) => {\n  console.log(`Session completed in ${e.detail.duration}s`);\n});\n```\n\n---\n\n## Troubleshooting\n\n### Widget not appearing\n- Ensure `Pulse.init()` completed without errors (`debug: true` will log all activity).\n- Verify your trigger rules are configured in the Pulse dashboard.\n- Check that your backend is returning `hasPendingTrigger: true` from `GET /triggers`.\n\n### Microphone not working\n- The browser requires HTTPS for `navigator.mediaDevices.getUserMedia`.\n- Check that the user has granted microphone permissions in browser settings.\n- Safari requires a user gesture (button click) before requesting mic access.\n\n### Events not reaching backend\n- Check the offline queue: if `navigator.onLine` is false, events are buffered.\n- Enable `debug: true` and inspect `[Pulse][INFO]` console logs.\n- Verify `partnerId` is correct and your backend is reachable at `baseUrl`.\n\n### TypeScript types\nAll public types are exported from the package:\n```ts\nimport type { PulseConfig, ThemeConfig, IdentifyPayload, SurveyTrigger } from '@avibra/pulse-web-sdk';\n```\n\n---\n\n## Local Development\n\n```bash\ncd sdk\nnpm install\nnpm run build:watch   # Rebuild on change\nnpm test              # Run test suite\nnpm run lint          # Lint TypeScript\n```\n\nOpen `examples/basic-integration.html` in a browser (after building) to test the widget locally.\n\n---\n\n## License\n\nMIT © Avibra Engineering\n","readmeFilename":"README.md"}