{"_id":"vanilla-agent","_rev":"43-6779e41532ad96baaa6cf1ecc6d984ee","name":"vanilla-agent","dist-tags":{"latest":"1.37.0"},"versions":{"0.1.0":{"name":"vanilla-agent","version":"0.1.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@0.1.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"820fa2ef62167c0cf5a97838bb8ab924bf0a8eba","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-0.1.0.tgz","fileCount":41,"integrity":"sha512-UDjaue0RHj+lF9oa6mbCA57xkSvMQ8lqFdPLhDEt2n2HYHKwi6PDJVpI9YLb7NkhBiChSLBz7uBlU1SlpqsWtQ==","signatures":[{"sig":"MEQCIDkg+0/9upykjaMfxI3w+ETmcLj5eRry5GJQeUC9G13jAiAUSNKMDEk6stz4DG8KTy24RK4WQ1NucLOSJ228zdQ+Pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4290316},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-0.1.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name ChatWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/b40d5f8152af48b493a41a3967e5984b/vanilla-agent-0.1.0.tgz","_integrity":"sha512-UDjaue0RHj+lF9oa6mbCA57xkSvMQ8lqFdPLhDEt2n2HYHKwi6PDJVpI9YLb7NkhBiChSLBz7uBlU1SlpqsWtQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lucide":"^0.552.0","marked":"^12.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_0.1.0_1762579688556_0.3916115478998896","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"vanilla-agent","version":"0.2.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@0.2.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"f9be969f69cfebe7c46662b9172f8c19e38800e8","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-0.2.0.tgz","fileCount":41,"integrity":"sha512-kQb5QvJ1tIb0WurKwKvuP59AWZ4z4usgFX9zARNCGNAA/2g8xsKLt19dHYQTrDRAAeZVPqtZWle7RBBQQMUynA==","signatures":[{"sig":"MEYCIQDQUDYfvNQve8cUGmi1kvczp2hi26UuK78ipZv10iIQ7AIhAI8wbU0va1oCAic4fCm47SaVQHKM5cENSF9j8p+qZ0H+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4293891},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-0.2.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name ChatWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/7e9991222a7645a660f48dc39f46a701/vanilla-agent-0.2.0.tgz","_integrity":"sha512-kQb5QvJ1tIb0WurKwKvuP59AWZ4z4usgFX9zARNCGNAA/2g8xsKLt19dHYQTrDRAAeZVPqtZWle7RBBQQMUynA==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lucide":"^0.552.0","marked":"^12.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_0.2.0_1762582455213_0.24632885022764928","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"vanilla-agent","version":"1.0.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.0.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"4930b91d39d6c90d5316ba5c3ba8a4b95ff7bb11","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.0.0.tgz","fileCount":42,"integrity":"sha512-6hZ35pNNmMTH+C3r6m/SL7KwnYON6hLy6W8hKrhHhU6TG6/T0Qo7Uw+axKUkpqKdgVdfoOBtS8eLAiAznnTkzQ==","signatures":[{"sig":"MEUCIBCodXyURAsedAGFHtk3BNME8KlfHix/DHrA3MnYBMJFAiEAuv3XGYIZtfHkEidKeIQODHVnU8TCounNe4V9DhLyKcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4529388},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.0.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/8596a71bc106608ca9caa74c0c2ca4e1/vanilla-agent-1.0.0.tgz","_integrity":"sha512-6hZ35pNNmMTH+C3r6m/SL7KwnYON6hLy6W8hKrhHhU6TG6/T0Qo7Uw+axKUkpqKdgVdfoOBtS8eLAiAznnTkzQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lucide":"^0.552.0","marked":"^12.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.0.0_1762753639325_0.011129951051639164","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"vanilla-agent","version":"1.1.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.1.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"e3892e2da6b7ede2153624d3555a141d4fd90a37","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.1.0.tgz","fileCount":42,"integrity":"sha512-IYrfAmE11zdgic9YJ8idTAbFae+tqmDkTy0o50b59wXDqhFPwSbcKL6omHQzTMIuZjbQ2W1hSqpchYLiUOWXcQ==","signatures":[{"sig":"MEQCIDqUWqoGQ4978b70+uF11lg8EGyckETt7x+BUIzxkqHKAiAJgC0zSBbLfVlWX5ZR5jzf9qsLZdth5GbV4xUXoIeAeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4535516},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.1.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/214f2be29772d3c90b37d090b0e88fff/vanilla-agent-1.1.0.tgz","_integrity":"sha512-IYrfAmE11zdgic9YJ8idTAbFae+tqmDkTy0o50b59wXDqhFPwSbcKL6omHQzTMIuZjbQ2W1hSqpchYLiUOWXcQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lucide":"^0.552.0","marked":"^12.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.1.0_1762775627509_0.48215601790052687","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"vanilla-agent","version":"1.2.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.2.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"f041dc55e4b7253aa973eb279d581a002eec843a","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.2.0.tgz","fileCount":42,"integrity":"sha512-coT0pSEseKtd+HppLii9FvkcxYvvyGlstlywsu65TFE/rNrDx4zhicAZy1dRjMQiVJl+BPlhYCNqQDIx9TDAvA==","signatures":[{"sig":"MEUCIQDkdMmbdid564UcJNIX7O0P4QBddhOYuWJcFL4IJfZdgwIgBMFKShkLjtXkcTJBmV7UvVZ8NpF4KTYgtC4O5eE20aY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4550762},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.2.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/4948b6a00d9d267413159bb210d238e3/vanilla-agent-1.2.0.tgz","_integrity":"sha512-coT0pSEseKtd+HppLii9FvkcxYvvyGlstlywsu65TFE/rNrDx4zhicAZy1dRjMQiVJl+BPlhYCNqQDIx9TDAvA==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lucide":"^0.552.0","marked":"^12.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.2.0_1762821568498_0.22345772920833262","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"vanilla-agent","version":"1.3.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.3.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"025695d3e288265996970235a3f4ceb444f8b23f","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.3.0.tgz","fileCount":42,"integrity":"sha512-X3PXTBVQYf2+kgjxWnR4H2y8/IVs6pH6CeWSbbOwH27wI2UciY/KgTCY8X6fONI4Q0NDNcNHeOjZlmWzVuSECA==","signatures":[{"sig":"MEUCIQCVkkASkqCQbGbFr32HZnRsJi36UzFIQPUlgzSgauReSwIgZz8Flf+mCs3Sc9FFrrVyUvy+ThGf+B/XfoX/0CLtOnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4558269},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.3.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/54db31b2c3af8bbb08294bf9cd1c4945/vanilla-agent-1.3.0.tgz","_integrity":"sha512-X3PXTBVQYf2+kgjxWnR4H2y8/IVs6pH6CeWSbbOwH27wI2UciY/KgTCY8X6fONI4Q0NDNcNHeOjZlmWzVuSECA==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lucide":"^0.552.0","marked":"^12.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.3.0_1762853669123_0.4524599231285018","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"vanilla-agent","version":"1.4.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.4.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"f17f2df0843a80e9589a70d34225b25944e3fb6d","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.4.0.tgz","fileCount":44,"integrity":"sha512-OfEg2u0IiOdzorwyyAmiUegKh2xRUWpCYMiz/ODHS8OGzZh94j4hpKCa5gdKzv3AjA+IrbLgUooDkzAAFr+OUg==","signatures":[{"sig":"MEQCIGygXu7LXm/Z0i8xq2ErWqpWpSXKRUCr0iFdALtbf5n2AiAkp23igsgCsJpsJvHzz27LIh8WxmnRz9MCDJ8hp13pgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4832564},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.4.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/d7856c9ac6925694da4bb06ae6aca999/vanilla-agent-1.4.0.tgz","_integrity":"sha512-OfEg2u0IiOdzorwyyAmiUegKh2xRUWpCYMiz/ODHS8OGzZh94j4hpKCa5gdKzv3AjA+IrbLgUooDkzAAFr+OUg==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.4.0_1763020995499_0.04543208173123636","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"vanilla-agent","version":"1.4.1","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.4.1","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"4366b4d79e41038880fd97cb18864c9f90fb3aac","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.4.1.tgz","fileCount":44,"integrity":"sha512-okMWzcvUStxtiRRtvvQ+pb2TPzPb8xzJ+zb72HLoS2Om8Pj/x6GmmsCT4JYdMaHC+Ft7zFNRnEHR2DIXW6sXhw==","signatures":[{"sig":"MEUCICIsiM6Q/zo0E8HVjK+0/dhVUsGdwcGQHLBua40sstPfAiEA6Pp+iQZNKV9rgy/bGWilF9/xatiwiOuS8t0gXRcvH9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4832564},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.4.1.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/59e228be40b9e8f94d1e8a20efd07979/vanilla-agent-1.4.1.tgz","_integrity":"sha512-okMWzcvUStxtiRRtvvQ+pb2TPzPb8xzJ+zb72HLoS2Om8Pj/x6GmmsCT4JYdMaHC+Ft7zFNRnEHR2DIXW6sXhw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.4.1_1763021280303_0.24265189399862708","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"vanilla-agent","version":"1.5.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.5.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"71dbae320504c745ca61fadf6b09cadf2609344e","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.5.0.tgz","fileCount":44,"integrity":"sha512-6ulfBhbdt4xvUO3EzZ3HEHCmqq9wovr+3Hi9Wj+6vUF5oaobKc5tp4zUNKkHb4FXD+yb01VH13k9F0bkgcOQhw==","signatures":[{"sig":"MEQCICqP4009r35f/malCKc0+/s6hm4G3VfrzWNY7zdtzgHjAiBgHxh7WrCZCANq2qkGzOh08n++0YuJoTSV3v02j+vIuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4832627},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.5.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/d52ecfcb63a45ddd05ae6c183262044c/vanilla-agent-1.5.0.tgz","_integrity":"sha512-6ulfBhbdt4xvUO3EzZ3HEHCmqq9wovr+3Hi9Wj+6vUF5oaobKc5tp4zUNKkHb4FXD+yb01VH13k9F0bkgcOQhw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.5.0_1763030803763_0.5608672840560853","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"vanilla-agent","version":"1.6.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.6.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"69d6631426918ff4621d10617af068f26a7b6d12","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.6.0.tgz","fileCount":47,"integrity":"sha512-Qijm7QiG0zdBuEdQyAE8z0Xy5vcgzOkQqH/f0uTEJiGxAWBULiGkNi3+Fv5wqGI9Od+/YC93XI75PIToXFG/Wg==","signatures":[{"sig":"MEYCIQCZloUnsVN6d7I0hMlsgdQG+siKtHO2Xj3DYi9o6/SNDwIhANm9LeXdccrEF7m+67W7RTCJcwGMvBgGsorW/0b08koC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5020330},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.6.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/c6417f9fc2b99b4c274266c834ffbced/vanilla-agent-1.6.0.tgz","_integrity":"sha512-Qijm7QiG0zdBuEdQyAE8z0Xy5vcgzOkQqH/f0uTEJiGxAWBULiGkNi3+Fv5wqGI9Od+/YC93XI75PIToXFG/Wg==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","postcss":"^8.4.38","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.6.0_1763113688224_0.24442756342402316","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"vanilla-agent","version":"1.7.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.7.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"3af1315281b75e972b0931492dbe3b6f3f48cb89","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.7.0.tgz","fileCount":47,"integrity":"sha512-7PogU2hjFGJ1mO7ihITQCo5BedMFAKVG3zDrxWyI3qAbiVGRspW7//WCYSaMBaB3OvO1djtpNYvjqGk7UZTS4A==","signatures":[{"sig":"MEUCICRY6vTwgCCG9FYs7iHRIVPokxeqDA8geQuwoGVlCVHUAiEA2LoFJCq9kERgEbjZc2shPbkeoUEjA7ECsjRz5ipEGjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5023141},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.7.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/7b60aeb016e0ad7115fb55afe809b2f6/vanilla-agent-1.7.0.tgz","_integrity":"sha512-7PogU2hjFGJ1mO7ihITQCo5BedMFAKVG3zDrxWyI3qAbiVGRspW7//WCYSaMBaB3OvO1djtpNYvjqGk7UZTS4A==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.7.0_1763381775554_0.6684095221871915","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"vanilla-agent","version":"1.7.1","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.7.1","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"695466920e726f0c384a316cd25b813adac78ec4","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.7.1.tgz","fileCount":47,"integrity":"sha512-dTLari9xok01qNEFcApjtiiYDSD34xHg7oj9DMxSeYBzYhn9sD/HIsQG5YUo9otGh6pagemBW88YKE5x55M8MA==","signatures":[{"sig":"MEYCIQDwHcfmO7iDg6E17xSCuPAhBvNtxFp7llgDSC43g7xsIgIhALBtByuz/gkdy7KmVVlH3JF9XojgIgbSjSrQ5yp1QCQ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5041091},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.7.1.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/6260fb96ecac7c1840ad846e2dc15ed4/vanilla-agent-1.7.1.tgz","_integrity":"sha512-dTLari9xok01qNEFcApjtiiYDSD34xHg7oj9DMxSeYBzYhn9sD/HIsQG5YUo9otGh6pagemBW88YKE5x55M8MA==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.7.1_1763384862416_0.8428577621082323","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"vanilla-agent","version":"1.7.2","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.7.2","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"58635d24c80e3af31d5474ad05bb91407b8f9f8f","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.7.2.tgz","fileCount":47,"integrity":"sha512-gDJoWGZXRh9u9zLoMpqRP7gBtQ3Z07n/4Eghl7qHJsuBBHafULvm8T1zb+4wArkOUjWlrmJxGOgU+2Dnrr0+bg==","signatures":[{"sig":"MEYCIQDmwlYouZY2bQG6JWqbu4YaiqSDjlH59hslTppfiXiZggIhAOy5CSDUmo0zgtcs8tr/O3/7oTu1jCVt20YXC5dhDgqR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5041091},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.7.2.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/261b009b8d7723fb76be83aafca27695/vanilla-agent-1.7.2.tgz","_integrity":"sha512-gDJoWGZXRh9u9zLoMpqRP7gBtQ3Z07n/4Eghl7qHJsuBBHafULvm8T1zb+4wArkOUjWlrmJxGOgU+2Dnrr0+bg==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.7.2_1763385410534_0.2656646088847492","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"vanilla-agent","version":"1.8.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.8.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"4b040f612fbc8586b97ee81f7d082715cfac1d8f","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.8.0.tgz","fileCount":47,"integrity":"sha512-Id1KyZWch3xAAUbAfCEFkSc4bvCDxa0yaK9KjQMgC1bg4p06rvIoVEqavI9D4eCov2Bu30xbHafq7XDbHkbuUg==","signatures":[{"sig":"MEYCIQC3DYNQH4zxWLfZ+K7MUnqnKKfnsmlH//729Vv9oZbrQQIhALCSH1YaRbcgsLtt1eOMjpwUO8rQnVAbNsWB2Iq8vD18","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5065250},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.8.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/3ee58a88574ffc9b55d93b65f6c68a79/vanilla-agent-1.8.0.tgz","_integrity":"sha512-Id1KyZWch3xAAUbAfCEFkSc4bvCDxa0yaK9KjQMgC1bg4p06rvIoVEqavI9D4eCov2Bu30xbHafq7XDbHkbuUg==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.8.0_1763422507462_0.41732803448397315","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"vanilla-agent","version":"1.9.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.9.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"2a06ec7cd6b4003ea44493059b6ec7241041ba20","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.9.0.tgz","fileCount":47,"integrity":"sha512-VlkC2jC4SuWWd0Mzvz0UXdaeA9ZPfv9Uwzpd934D6r98896X8qAV41TRyZFiMP+X/ZSGNRCTDA0Hyrgojhd7Ww==","signatures":[{"sig":"MEYCIQDNEBo4IUcihueojm2+2xzHUTIwwCrPhLAyyYtXKtLR9wIhAMBL/9sl4va9pGeoP14+BAv2eQdsBEHDk5f2es6t5crE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5068660},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.9.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/6817ce214889dd42cd102a4d30aadb01/vanilla-agent-1.9.0.tgz","_integrity":"sha512-VlkC2jC4SuWWd0Mzvz0UXdaeA9ZPfv9Uwzpd934D6r98896X8qAV41TRyZFiMP+X/ZSGNRCTDA0Hyrgojhd7Ww==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.9.0_1763451454134_0.1184549015947769","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"vanilla-agent","version":"1.10.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.10.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"f9cae11a6d8f7c291109465ee1947d80aa860c31","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.10.0.tgz","fileCount":50,"integrity":"sha512-nM+1iBJ55umcKYl6l3Rwnk/tpMB4kygoYMKfUCDaypkCgQYN84BllG1PIoiVmrEyvMRW8cECZZIJAE+vXyR1iw==","signatures":[{"sig":"MEUCIDBWvGRY2xXFbDGJzRKqXDoi9tXKhvWDKVU7THzu9NWkAiEAtdnnvx3M9bi5/JWCH/ujJimSQMUCkpXlYbMgkdQAOdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5203986},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.10.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/fe9280f064dd2c4f09a3561607eb558f/vanilla-agent-1.10.0.tgz","_integrity":"sha512-nM+1iBJ55umcKYl6l3Rwnk/tpMB4kygoYMKfUCDaypkCgQYN84BllG1PIoiVmrEyvMRW8cECZZIJAE+vXyR1iw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.10.0_1764415064484_0.974310090244044","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"vanilla-agent","version":"1.11.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.11.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"96a6136632e0f74d7903a172350fc86bfede9290","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.11.0.tgz","fileCount":53,"integrity":"sha512-Yuq7p8WciANzGwMIOe/fD5P2V3SKMJwrAWLunNcAnFCD/pQ584SQuSlrQQd4vHgTmDCQb7URQ2VYxKSxVm60YQ==","signatures":[{"sig":"MEUCIQDblnhmteAI6hEXZEYNXB8U8deUVBLTVJq4w2ROoQNL8AIgQqyLQW3TznKWQO5yYIbiW3u8VUYN73grQetXOQIg27U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5501854},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.11.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/20b7cdef9ca8bccf7c3e203f6ba945bf/vanilla-agent-1.11.0.tgz","_integrity":"sha512-Yuq7p8WciANzGwMIOe/fD5P2V3SKMJwrAWLunNcAnFCD/pQ584SQuSlrQQd4vHgTmDCQb7URQ2VYxKSxVm60YQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.11.0_1764501490277_0.6303247205048805","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"vanilla-agent","version":"1.12.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.12.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"16797a913e339162788d961f66b268af887d7389","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.12.0.tgz","fileCount":54,"integrity":"sha512-d9gsEJGgQ7GOMyo1MQbEX7DUyH+I7+JGmcrNr6qUlfS3u7/mb+7Y9K8bUqKX6LQiRnnVaLlZeEit/PCEI7bJ9A==","signatures":[{"sig":"MEYCIQDS5V4bVSNKHdzycv58Zps34uVyWX6C7lLe09733HtCSQIhALFsW1kl9KRjHDbl/xjLMYPm49vZN++0Sq/rnkmLPfy4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5874662},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.12.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/1dfb397c076ee5392739068be8a34d37/vanilla-agent-1.12.0.tgz","_integrity":"sha512-d9gsEJGgQ7GOMyo1MQbEX7DUyH+I7+JGmcrNr6qUlfS3u7/mb+7Y9K8bUqKX6LQiRnnVaLlZeEit/PCEI7bJ9A==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.12.0_1764538914543_0.6961925943033076","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"vanilla-agent","version":"1.13.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.13.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"658acaaef9d2d92f18b50fa18216ddf0897375dc","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.13.0.tgz","fileCount":54,"integrity":"sha512-+xPz9Kg2scbNA/w0Tirfv0JwxESX4F4OzMsmZHd6x+WRf9sjqSumC4/XQDZ9XKvG8j5Om42ImFryf6y4PRV3nw==","signatures":[{"sig":"MEYCIQDKOFjCGT4n3o7qDrLaXnEC1eJQClpviHE2Ia0dw6WmtgIhAOKooL7mHmKXo6y/P9rfR9Rr6r6rO48dwl/qPuzNAQ4l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5892619},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.13.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/a7ac72e97dfe84aad2a94a0e33d9f266/vanilla-agent-1.13.0.tgz","_integrity":"sha512-+xPz9Kg2scbNA/w0Tirfv0JwxESX4F4OzMsmZHd6x+WRf9sjqSumC4/XQDZ9XKvG8j5Om42ImFryf6y4PRV3nw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.13.0_1764573024356_0.9048448553621777","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"vanilla-agent","version":"1.14.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.14.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"5fbada4a9c00d3ad89505b80ce7118a1c5863fee","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.14.0.tgz","fileCount":54,"integrity":"sha512-uCdn4cfAwOdI87IENnh/Keu4SiWl8W4F3iXewNXprPTMfL61vCphOLjfSdtmAP5DwZNGr8GRARl/x7dCU0YZxQ==","signatures":[{"sig":"MEYCIQC6kgYoMKpV73JhgDnAb1f4p2/fOZffhUymqlh9v3SnvQIhAL21MxYMYzhift1jKrzySb40UNOJL39shQRWgUxocFEt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5895724},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.14.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/3184539eb18167f8e3b2cc3f5e69d527/vanilla-agent-1.14.0.tgz","_integrity":"sha512-uCdn4cfAwOdI87IENnh/Keu4SiWl8W4F3iXewNXprPTMfL61vCphOLjfSdtmAP5DwZNGr8GRARl/x7dCU0YZxQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.14.0_1764578129143_0.7761132311471188","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"vanilla-agent","version":"1.15.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.15.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"f8d5ba9a34ebde151229acba62fcedf6b7b589ce","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.15.0.tgz","fileCount":54,"integrity":"sha512-/uISBsE/0RELG0MGMp7gALzVx3c2nMVb8VDCxCVKQrTIrFQvTDnf8nTLn0WbEX+7rQnmmwsURjvnc3QItLp9dQ==","signatures":[{"sig":"MEUCIQDUpdb74FWbnNCobZkKxLE0mlhOrelPdb7eovp6GKlJgwIgV0eG00vYFvayoAoC8OY0hHFnbXDpISwg4+VZR2Z6M1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5908386},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.15.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/88b384925264df492474a379f245f358/vanilla-agent-1.15.0.tgz","_integrity":"sha512-/uISBsE/0RELG0MGMp7gALzVx3c2nMVb8VDCxCVKQrTIrFQvTDnf8nTLn0WbEX+7rQnmmwsURjvnc3QItLp9dQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.15.0_1764745082030_0.8522334793656283","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"vanilla-agent","version":"1.16.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.16.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"76987dbd508ad2775fc65363394db0a49473d987","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.16.0.tgz","fileCount":54,"integrity":"sha512-M53FUVjMaOc3jaBS1LZQHu4taTCqofllEJgigPEkhQQmjAaOHwpsTdIIPOYoIBB/5vwowhQiIj1+iTzE2aaM1g==","signatures":[{"sig":"MEMCIGEJsYYlrT7biuzaJPUrHHL0Ojn2GitG/gDDLi1Po4waAh9HQNJcmMaerd98Vw1wcI5sKgKPJwZNUNumgzbtW6rz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5910347},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.16.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/7b68fb3704d1a7d1ee46de07a1b67d79/vanilla-agent-1.16.0.tgz","_integrity":"sha512-M53FUVjMaOc3jaBS1LZQHu4taTCqofllEJgigPEkhQQmjAaOHwpsTdIIPOYoIBB/5vwowhQiIj1+iTzE2aaM1g==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.16.0_1764746753690_0.1891340218631743","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"vanilla-agent","version":"1.17.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.17.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"f1336cda333952c32ca25d4e032284ef1dee446a","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.17.0.tgz","fileCount":54,"integrity":"sha512-zDLdlj5wWKf2I7Ch9yjYweb/J0MJ2ycFTvWh4n1waTIV30TVvRuZVb3OngquMUWR4a0sEuhU7KBwAOusaqoIkA==","signatures":[{"sig":"MEYCIQCAuKgIizmXv8wDdmw3UIyp/h1XZ6NKFldMFcn8HlJMTgIhAODpwxSldqFbs1hG+Ke/7FJHKTk4wFQXIH3EZ9NJAZEO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5911643},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.17.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/4db6038f61ad84539ee4f1e093f57bb7/vanilla-agent-1.17.0.tgz","_integrity":"sha512-zDLdlj5wWKf2I7Ch9yjYweb/J0MJ2ycFTvWh4n1waTIV30TVvRuZVb3OngquMUWR4a0sEuhU7KBwAOusaqoIkA==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.17.0_1764748477285_0.948526108244029","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"vanilla-agent","version":"1.18.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.18.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"3f4f5d019e764af213881d1cbd19fcc302947faa","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.18.0.tgz","fileCount":54,"integrity":"sha512-k0K8v+syjENuH29jIJjV9jq0cyGHVQuNsns6XlqM4YCSJUZ6ONwR+yHyXmaossXdUUXPPXE08dX1o6KBvboMYA==","signatures":[{"sig":"MEQCIEYdNZ26br03hZzXvq73Y4jA2n2ku+LdS0WKkb8xCzEZAiBNU1F3pkZrnrwQXaBWNflI1p231Em8ZPLDc3f/9EWDYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5912328},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.18.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/31b5ee6d0f4717e8d847d4210118012e/vanilla-agent-1.18.0.tgz","_integrity":"sha512-k0K8v+syjENuH29jIJjV9jq0cyGHVQuNsns6XlqM4YCSJUZ6ONwR+yHyXmaossXdUUXPPXE08dX1o6KBvboMYA==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.18.0_1764749707986_0.4579860912918563","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"vanilla-agent","version":"1.19.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.19.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"871e9966e75f75982719a752347ceff7c8a40c8b","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.19.0.tgz","fileCount":54,"integrity":"sha512-/P22ptBZvWGQB0Zah7I8CGts+1Wl1zIDY7PvzIidaVCnLWFvnujsJ3BHk+qCd6EyRkhGpvJkgsXquwND/TLSjw==","signatures":[{"sig":"MEYCIQCzaCuzjkC18t2V1opdfe7eQvVwWg838FR/xQZTzwXbSwIhAL+0BzrO49syUsemXLfDVo/iR5OwxOxn73b/4sxO8Gri","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5912994},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.19.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/6aa7b1ac7e636079bbca863a2333768c/vanilla-agent-1.19.0.tgz","_integrity":"sha512-/P22ptBZvWGQB0Zah7I8CGts+1Wl1zIDY7PvzIidaVCnLWFvnujsJ3BHk+qCd6EyRkhGpvJkgsXquwND/TLSjw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.19.0_1764750838726_0.43268337539846624","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"vanilla-agent","version":"1.20.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.20.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"7d07cd0168c2cd58e5f0a96b8c2f14992eea678d","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.20.0.tgz","fileCount":54,"integrity":"sha512-gSINhyR+fKmfoHaHa0BpYI9/vp582M+zmpuR6eC2hbPykkgnsnU0MLRSsGJYjEp7I5vUCohCL1Y8hAxf31Fqrw==","signatures":[{"sig":"MEUCIB8hxVpQ204ugkHike1losMf3c+AxPkYVslfSmQi6hdZAiEAp3/eH47MYze/yWmYIma9W4xnjwM3GePe6S38na6bUt0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5915373},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.20.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/e6ac0815f0bb2af8d7c51227c572274d/vanilla-agent-1.20.0.tgz","_integrity":"sha512-gSINhyR+fKmfoHaHa0BpYI9/vp582M+zmpuR6eC2hbPykkgnsnU0MLRSsGJYjEp7I5vUCohCL1Y8hAxf31Fqrw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.20.0_1764810435737_0.4241356672206771","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"vanilla-agent","version":"1.21.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.21.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"bb1ea621e4acc22baca85142b5294d53dfce3135","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.21.0.tgz","fileCount":54,"integrity":"sha512-vUN2dT6E0gpy3FJee7+3xhyJ4eo8vfACPjrUUPoK3KC5rZBJ/ZS69WOBik19tWgGs2PPBE7vyNvFGgmHRCgmOQ==","signatures":[{"sig":"MEQCIDlaAvGFdC0DXX5VCY7jnZ3qYznTTSol3d1BNB4GUSiWAiAx5jE4SF/BE/NCjcUr0oUQ6a6zAvy9kYDjh5W92cmVnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5995701},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.21.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/c437fb5389672870ee4612886113773c/vanilla-agent-1.21.0.tgz","_integrity":"sha512-vUN2dT6E0gpy3FJee7+3xhyJ4eo8vfACPjrUUPoK3KC5rZBJ/ZS69WOBik19tWgGs2PPBE7vyNvFGgmHRCgmOQ==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.21.0_1765012639140_0.8054054501946908","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"vanilla-agent","version":"1.22.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.22.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/chaty#readme","bugs":{"url":"https://github.com/becomevocal/chaty/issues"},"dist":{"shasum":"2e4fdb1aaa16d582856dc09e04ee0154248c0342","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.22.0.tgz","fileCount":54,"integrity":"sha512-jJhEdDp+ycXzgQ11X9/SKqKnefyglr50pJ6wPsBdTuvtyq26le0AiBjFbF01K/xlCXiEQAV7lL8fAHduv8a7Pw==","signatures":[{"sig":"MEUCIFdbV+eYJaDBrYspF17QpWkqAi5L7aUd2Gikpk3RLDNCAiEApKFxvbxsBTR5qyMP8x9+hjjZ+C3mbEb6Vi2nhzxmpyM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6143223},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.22.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/46d32a421134f2c9dfdbc655772e308f/vanilla-agent-1.22.0.tgz","_integrity":"sha512-jJhEdDp+ycXzgQ11X9/SKqKnefyglr50pJ6wPsBdTuvtyq26le0AiBjFbF01K/xlCXiEQAV7lL8fAHduv8a7Pw==","repository":{"url":"git+https://github.com/becomevocal/chaty.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.22.0_1765233456714_0.3258054157947843","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"vanilla-agent","version":"1.23.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.23.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"626d4e1529deaf5a0ab64a5d4e319765aadabd55","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.23.0.tgz","fileCount":56,"integrity":"sha512-N5TyM+TCSlaOUE1fL6GiPuTIltyJZlvRg4AR4X87Jd9sNBzXXqPEyYRqlVDrPC6Tv+mLXRME0ATbH88qsmgYaA==","signatures":[{"sig":"MEYCIQDUD8v+FtB2CIG6V5B/cwj+4+hE917SOuqP2zu8lNx3yAIhAJ0EQ484PdWeGMRTQsdR4R2BJL40+67WV85Wj+fah74F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6331295},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.23.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/3ce0b754f45552ab89d0282cf6720cf6/vanilla-agent-1.23.0.tgz","_integrity":"sha512-N5TyM+TCSlaOUE1fL6GiPuTIltyJZlvRg4AR4X87Jd9sNBzXXqPEyYRqlVDrPC6Tv+mLXRME0ATbH88qsmgYaA==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.23.0_1765358571133_0.3247509904148145","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"vanilla-agent","version":"1.24.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.24.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"37ebd9bee55a236d1cd485e27150c00396886be8","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.24.0.tgz","fileCount":56,"integrity":"sha512-ot1pyUL/r7C6FL51c4VxNyo83A2iYzPl+vM6xRgEc/pc0TibL3zTHFfagluTxRvE6CqRb0a3GTWGq5+RmYZoCA==","signatures":[{"sig":"MEYCIQDEm3sFWaQkVfUGIXaC6ysU40oBDXJpF5mfzDqct6OhZQIhANmNSXMlrTjKVf2xqpmXBKp/bYetJ3WDO4qMgNgTm0Un","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6394958},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.24.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/7bd6f91871b258162ad3cbb6811ee3e7/vanilla-agent-1.24.0.tgz","_integrity":"sha512-ot1pyUL/r7C6FL51c4VxNyo83A2iYzPl+vM6xRgEc/pc0TibL3zTHFfagluTxRvE6CqRb0a3GTWGq5+RmYZoCA==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.24.0_1765365458434_0.8043361729441771","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"vanilla-agent","version":"1.25.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.25.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"f3e68938bfd21fa6a2204ffd4327021a5c8425fc","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.25.0.tgz","fileCount":56,"integrity":"sha512-AeSNO0+NCUOy8BarDR1zbVns3g7LpCmgfJh5JScJk7hORcaaLYfOKN36K5dXCjYnPhGFBogYBfQc2qDeiy1H1g==","signatures":[{"sig":"MEUCIDWkSN0ZT73cSrrKVY2vMQVkYd11yc0nGEmBYmxx+4MxAiEAzGBbHgWn7qSHkuip2Q062WoEgAd4/IFdR4OL7SmP1hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6382162},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.25.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/f53ca56a876a0fc99cbba00ef7b27d0f/vanilla-agent-1.25.0.tgz","_integrity":"sha512-AeSNO0+NCUOy8BarDR1zbVns3g7LpCmgfJh5JScJk7hORcaaLYfOKN36K5dXCjYnPhGFBogYBfQc2qDeiy1H1g==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.25.0_1765967022102_0.5489461585484547","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"vanilla-agent","version":"1.26.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.26.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"8283ca926a69edad2cc7be2d75500841eb26efd4","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.26.0.tgz","fileCount":56,"integrity":"sha512-VBjiWlkD2azuuSq4hGDs/JO6xxtdwxVqBsg4p/86PwKDSSAnqr2PFEKLsBYNC1+maAu3Bw7cFFZVQMFAsDE3/g==","signatures":[{"sig":"MEQCIFtTk6ZlOQ7kiI848/CzZCfBFZy+3OfsqjYY/ilgBy5fAiAv5U0YRHFWg+J+A120brnCqeUkkgmnuQrf6oORQiWt3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6386070},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.26.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/ff80d1c78c80dc5d4dc5f5ef15d4b866/vanilla-agent-1.26.0.tgz","_integrity":"sha512-VBjiWlkD2azuuSq4hGDs/JO6xxtdwxVqBsg4p/86PwKDSSAnqr2PFEKLsBYNC1+maAu3Bw7cFFZVQMFAsDE3/g==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.26.0_1766117418585_0.552768597044766","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"vanilla-agent","version":"1.27.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.27.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"345905220a5404e4c8b3fc10900420f776cd1727","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.27.0.tgz","fileCount":56,"integrity":"sha512-TH86jNV6BThmMreY/+kFwDzbvL8HLAyGFKCdpflK/qsqON+AONWpyXwSVSBK9GBb4jqetHsnU9ImUa0LoIlYeg==","signatures":[{"sig":"MEQCIHhpRCZqZM1EThek5pF81hro0C1FJbXiKZgRipPw+1EEAiAI/AaIFNhw+IAiuSn96gd3Klb6rV8uiW6DIs8T221XpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6396141},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.27.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/ebd407f946e394e3692d1a3423b37a79/vanilla-agent-1.27.0.tgz","_integrity":"sha512-TH86jNV6BThmMreY/+kFwDzbvL8HLAyGFKCdpflK/qsqON+AONWpyXwSVSBK9GBb4jqetHsnU9ImUa0LoIlYeg==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.27.0_1766134462443_0.8987495545920645","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"vanilla-agent","version":"1.28.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.28.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"8a4022388f24bf48599993b06f937c491313b5a5","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.28.0.tgz","fileCount":56,"integrity":"sha512-EhqKoLtHh62DnZd7P+kV0TJO+GPWQmpNUwIEJpV/jwKS8dZpCIWLexR7uFZC0CXHapAMy3gj7M4Hl0KL5M8YAw==","signatures":[{"sig":"MEUCIEINt0ezULEeQKml+KmS3yu/RI8MLwBtOdkfjp28eSIMAiEA3xFgA3/G9oshiXiMU18tt4j7t8s3581VlJW/IRlkfbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6397185},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.28.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/362e3a69df96a84130d29d4c3864d326/vanilla-agent-1.28.0.tgz","_integrity":"sha512-EhqKoLtHh62DnZd7P+kV0TJO+GPWQmpNUwIEJpV/jwKS8dZpCIWLexR7uFZC0CXHapAMy3gj7M4Hl0KL5M8YAw==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.28.0_1766136569614_0.6790426539260663","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"vanilla-agent","version":"1.29.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.29.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"133242f33a043333e9bfc1a8e462b2b2a57a1e5f","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.29.0.tgz","fileCount":56,"integrity":"sha512-lE0TTtmZx8VbntBg69M0U/jsmQ60aUAfjjLQxg7YTB+LAFEvULv+wfhO4nXzsuHzSnV5LUn/N6dXU05b1AkX6w==","signatures":[{"sig":"MEQCIClHoON2IKE1Dmi9CFdLreg0TyUNYmmmdIN1WfpsxghOAiApwUFjYPtj4BtR9/Q1P+lR4bQ5CIxbBBdEZZjXSGD+hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6397046},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.29.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/81f47ed576685a1c24d7e46511c4cd51/vanilla-agent-1.29.0.tgz","_integrity":"sha512-lE0TTtmZx8VbntBg69M0U/jsmQ60aUAfjjLQxg7YTB+LAFEvULv+wfhO4nXzsuHzSnV5LUn/N6dXU05b1AkX6w==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.29.0_1766352481167_0.534260790912704","host":"s3://npm-registry-packages-npm-production"}},"1.30.0":{"name":"vanilla-agent","version":"1.30.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.30.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"603724b7cc8feb4511cf39d115471796676561cf","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.30.0.tgz","fileCount":58,"integrity":"sha512-uLHOrYD9Z+xM3JJYrmHdH6rCtEhMEjlXyWJfF3e74QHf/B7o9VsoVzoNU5rjdBdVx2KNoYaaLwJcKgiJ+k2FZg==","signatures":[{"sig":"MEQCIEB85sriVPBKLXOQbYBjwtbPMXaCsOe0bxRuqC6f13AJAiAC0QWztSmddLMI3ckYy1ZXCPCBBb5uhjy45emlzmHEAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6517708},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.30.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/8a230ad449e8fb1b7dbe62b60acd1b53/vanilla-agent-1.30.0.tgz","_integrity":"sha512-uLHOrYD9Z+xM3JJYrmHdH6rCtEhMEjlXyWJfF3e74QHf/B7o9VsoVzoNU5rjdBdVx2KNoYaaLwJcKgiJ+k2FZg==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.30.0_1766571190936_0.930631325861565","host":"s3://npm-registry-packages-npm-production"}},"1.31.0":{"name":"vanilla-agent","version":"1.31.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.31.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"edc034b931b1502fa13eab697c665bb3f7b18cc1","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.31.0.tgz","fileCount":58,"integrity":"sha512-Yeow84gbxujaJYo+D3j01D8UQ7fLgpP4P//9h6uG9Yl48lVGz57hxD7V2Sr0LromQWF37tfly9HBMwk5jvnm1w==","signatures":[{"sig":"MEYCIQCIwibqRGmMqJr0A3TqAoZ9UA68Jzznt21AxlzMDWCVSwIhAKbFrL9D8syKKe3PWihsBZvR+f+uCh7YOWPzhDYblEVb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6549637},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.31.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/d33148ba991f7b65417ec76ef7446514/vanilla-agent-1.31.0.tgz","_integrity":"sha512-Yeow84gbxujaJYo+D3j01D8UQ7fLgpP4P//9h6uG9Yl48lVGz57hxD7V2Sr0LromQWF37tfly9HBMwk5jvnm1w==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.31.0_1766740457594_0.015353936290351422","host":"s3://npm-registry-packages-npm-production"}},"1.32.0":{"name":"vanilla-agent","version":"1.32.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.32.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"247c8639551c9c6816d671b29683832c652c3f0b","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.32.0.tgz","fileCount":58,"integrity":"sha512-7sRrkjS1pWyfmwPunZLRBFjZMGQOzwm/NlcNUvre8LL2kwPhwn5/QHWibFGkG/mgCYvQVI+bRH280CjH1254+g==","signatures":[{"sig":"MEUCIG8PWnzHjf/zieG20L15sxEoZXhpiGZxeKOUsTQvNPVlAiEAzjRtrIQpxTpPID94zvTcwAVtD8EdlS9D01Ce3kpvZ9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6562305},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.32.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/978f6a3918dfd4079b4474244b8cc449/vanilla-agent-1.32.0.tgz","_integrity":"sha512-7sRrkjS1pWyfmwPunZLRBFjZMGQOzwm/NlcNUvre8LL2kwPhwn5/QHWibFGkG/mgCYvQVI+bRH280CjH1254+g==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.32.0_1766828024172_0.912416010307709","host":"s3://npm-registry-packages-npm-production"}},"1.33.0":{"name":"vanilla-agent","version":"1.33.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.33.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"882de64757b5e1003b5cc5afb922fecd7cfea5b9","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.33.0.tgz","fileCount":59,"integrity":"sha512-xdPt9mO6/YZSZDMh1aD9BWvJH3VkaQWn/DBagxzWQhSw3A5H9EpDuskL4HxT0nTJEDTx/AYd5XMrLLW2HxCAPA==","signatures":[{"sig":"MEQCIE1zhy2itm/b1pMOa+ji0LHJtsu6LrIuPb08jgR+RRJmAiBqOgAmHUNzehwK8Dkw4AUxi3K+bMs1b4NAKC3rtUMRsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6664744},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.33.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/20527950040c8b2c719bd3fb0444b99c/vanilla-agent-1.33.0.tgz","_integrity":"sha512-xdPt9mO6/YZSZDMh1aD9BWvJH3VkaQWn/DBagxzWQhSw3A5H9EpDuskL4HxT0nTJEDTx/AYd5XMrLLW2HxCAPA==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.33.0_1767065421119_0.3583344691842685","host":"s3://npm-registry-packages-npm-production"}},"1.34.0":{"name":"vanilla-agent","version":"1.34.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.34.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"eabd72c6dca739395e57406e83ae5c02713da9c8","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.34.0.tgz","fileCount":61,"integrity":"sha512-PfoOmCqKpxOhLAsvMa5X3rALiTwCcJNy3kuqoV0eagWHXZN7IP6VgjAqfb4XezXLjcMCWtZeUS3OkoeT3wBgbg==","signatures":[{"sig":"MEYCIQDDwKkfwO8aROq1Qiolay6Ps44QLCJO7zOnz+OhhikIHwIhAJ/o4f/7HPyjuI3pEijVfzsC26tzBU7BpWrfil79QX98","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6913073},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.34.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/8fdafe48b1bff49c2547cb9961e73d2e/vanilla-agent-1.34.0.tgz","_integrity":"sha512-PfoOmCqKpxOhLAsvMa5X3rALiTwCcJNy3kuqoV0eagWHXZN7IP6VgjAqfb4XezXLjcMCWtZeUS3OkoeT3wBgbg==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.34.0_1767266408818_0.1952970782889285","host":"s3://npm-registry-packages-npm-production"}},"1.35.0":{"name":"vanilla-agent","version":"1.35.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.35.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"7f15e6f720c03906931c00013ccc272a08c12277","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.35.0.tgz","fileCount":61,"integrity":"sha512-MRlq6ENjhhQX2TGNpgWiwYomHacHBXIyaIOZS0nxU9X3qhItenAaj3Oy1BML8s4wpM4E8itDEtLs777wqbnRCg==","signatures":[{"sig":"MEQCIBzvOoCoWgOwIhYqhSDLfFjfY1FE6blvHCvRf48TAVJ1AiApsqOZLpyGLnnn671C40nwINvd2hj0y9mzI/D7rvjj+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6913507},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.35.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/38345a788fa09d3401073888a324d93c/vanilla-agent-1.35.0.tgz","_integrity":"sha512-MRlq6ENjhhQX2TGNpgWiwYomHacHBXIyaIOZS0nxU9X3qhItenAaj3Oy1BML8s4wpM4E8itDEtLs777wqbnRCg==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.35.0_1767299021725_0.31937381439976","host":"s3://npm-registry-packages-npm-production"}},"1.36.0":{"name":"vanilla-agent","version":"1.36.0","keywords":["chat","widget","streaming","typescript"],"license":"MIT","_id":"vanilla-agent@1.36.0","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"homepage":"https://github.com/becomevocal/vanilla-agent#readme","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"dist":{"shasum":"8cbc536bca248b638b1b6ecefbbe538ee764b12a","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.36.0.tgz","fileCount":61,"integrity":"sha512-XqvItKpeibKdtb887DTadeTtB8e43uTLjQPqQ9GdItArqzHjQW3+HtV/Sk73q6kPA3FlvCDIaS40tUYqhp3EFg==","signatures":[{"sig":"MEQCIBW8KZ4zfbzPcLtoLDOuNe8IKQO6XLtH50X56hVTxUu2AiAHq39VxOjQWdOwcjvGQoo7P7sk0NUVew+S496KMLpyBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6918471},"main":"dist/index.cjs","type":"module","_from":"file:vanilla-agent-1.36.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"scripts":{"lint":"eslint . --ext .ts","test":"vitest","build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","test:ui":"vitest --ui","test:run":"vitest run","typecheck":"tsc --noEmit","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting"},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/f135e7561b0423fa9c060da68b5a5ceb/vanilla-agent-1.36.0.tgz","_integrity":"sha512-XqvItKpeibKdtb887DTadeTtB8e43uTLjQPqQ9GdItArqzHjQW3+HtV/Sk73q6kPA3FlvCDIaS40tUYqhp3EFg==","repository":{"url":"git+https://github.com/becomevocal/vanilla-agent.git","type":"git"},"_npmVersion":"10.8.2","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.22.4","lucide":"^0.552.0","marked":"^12.0.2","idiomorph":"^0.7.4","partial-json":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","eslint":"^8.57.0","rimraf":"^5.0.5","vitest":"^4.0.9","postcss":"^8.4.38","@vitest/ui":"^4.0.9","typescript":"^5.4.5","@types/node":"^20.12.7","tailwindcss":"^3.4.10","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vanilla-agent_1.36.0_1767773043351_0.8973952968360139","host":"s3://npm-registry-packages-npm-production"}},"1.37.0":{"name":"vanilla-agent","version":"1.37.0","description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./widget.css":{"import":"./widget.css","default":"./dist/widget.css"}},"dependencies":{"idiomorph":"^0.7.4","lucide":"^0.552.0","marked":"^12.0.2","partial-json":"^0.1.7","zod":"^3.22.4"},"devDependencies":{"@types/node":"^20.12.7","@vitest/ui":"^4.0.9","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","postcss":"^8.4.38","rimraf":"^5.0.5","tailwindcss":"^3.4.10","tsup":"^8.0.1","typescript":"^5.4.5","vitest":"^4.0.9"},"engines":{"node":">=18.17.0"},"license":"MIT","keywords":["chat","widget","streaming","typescript"],"repository":{"type":"git","url":"git+https://github.com/becomevocal/vanilla-agent.git"},"scripts":{"build":"rimraf dist && npm run build:styles && npm run build:client && npm run build:installer","build:styles":"node -e \"const fs=require('fs');fs.mkdirSync('dist',{recursive:true});fs.copyFileSync('src/styles/widget.css','dist/widget.css');\"","build:client":"tsup src/index.ts --format esm,cjs,iife --global-name AgentWidget --minify --sourcemap --splitting false --dts --loader \".css=text\"","build:installer":"tsup src/install.ts --format iife --global-name SiteAgentInstaller --out-dir dist --minify --sourcemap --no-splitting","lint":"eslint . --ext .ts","typecheck":"tsc --noEmit","test":"vitest","test:ui":"vitest --ui","test:run":"vitest run"},"_id":"vanilla-agent@1.37.0","bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"homepage":"https://github.com/becomevocal/vanilla-agent#readme","_integrity":"sha512-VbIYcC2FNC2VkzguJuubYiy6D8AkdjLH7k5d2IPnj1ASF2NLbwTN16fahvw3ZDnIjHKaX+U/6+KA9VO4c2E2ng==","_resolved":"/private/var/folders/85/hxfklwc50yzg45mc449306zc0000gn/T/6ee96980520ee8a75ee493bd6487788d/vanilla-agent-1.37.0.tgz","_from":"file:vanilla-agent-1.37.0.tgz","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-VbIYcC2FNC2VkzguJuubYiy6D8AkdjLH7k5d2IPnj1ASF2NLbwTN16fahvw3ZDnIjHKaX+U/6+KA9VO4c2E2ng==","shasum":"b7fa9cfdf2cc78e85e7f035d95f9615fa37b55b8","tarball":"https://registry.npmjs.org/vanilla-agent/-/vanilla-agent-1.37.0.tgz","fileCount":61,"unpackedSize":6978694,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEePLQUlr894SDW9cKQZAz2n+Se0ZCMFwczV51ZBU/fwAiBAT1GmqPrzYGXWPKC6BzTPHbjZvDTJ0RpWneRuOkO9Bw=="}]},"_npmUser":{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"},"directories":{},"maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vanilla-agent_1.37.0_1767910257600_0.15746443828683798"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-08T05:28:08.425Z","modified":"2026-01-08T22:10:58.034Z","0.1.0":"2025-11-08T05:28:08.830Z","0.2.0":"2025-11-08T06:14:15.496Z","1.0.0":"2025-11-10T05:47:19.615Z","1.1.0":"2025-11-10T11:53:47.741Z","1.2.0":"2025-11-11T00:39:28.783Z","1.3.0":"2025-11-11T09:34:29.410Z","1.4.0":"2025-11-13T08:03:15.813Z","1.4.1":"2025-11-13T08:08:00.517Z","1.5.0":"2025-11-13T10:46:43.999Z","1.6.0":"2025-11-14T09:48:08.469Z","1.7.0":"2025-11-17T12:16:15.771Z","1.7.1":"2025-11-17T13:07:42.644Z","1.7.2":"2025-11-17T13:16:50.743Z","1.8.0":"2025-11-17T23:35:07.740Z","1.9.0":"2025-11-18T07:37:34.377Z","1.10.0":"2025-11-29T11:17:44.725Z","1.11.0":"2025-11-30T11:18:10.558Z","1.12.0":"2025-11-30T21:41:54.789Z","1.13.0":"2025-12-01T07:10:24.575Z","1.14.0":"2025-12-01T08:35:29.385Z","1.15.0":"2025-12-03T06:58:02.256Z","1.16.0":"2025-12-03T07:25:53.927Z","1.17.0":"2025-12-03T07:54:37.517Z","1.18.0":"2025-12-03T08:15:08.240Z","1.19.0":"2025-12-03T08:33:58.955Z","1.20.0":"2025-12-04T01:07:16.034Z","1.21.0":"2025-12-06T09:17:19.332Z","1.22.0":"2025-12-08T22:37:36.953Z","1.23.0":"2025-12-10T09:22:51.377Z","1.24.0":"2025-12-10T11:17:38.667Z","1.25.0":"2025-12-17T10:23:42.278Z","1.26.0":"2025-12-19T04:10:18.828Z","1.27.0":"2025-12-19T08:54:22.653Z","1.28.0":"2025-12-19T09:29:29.869Z","1.29.0":"2025-12-21T21:28:01.385Z","1.30.0":"2025-12-24T10:13:11.109Z","1.31.0":"2025-12-26T09:14:17.800Z","1.32.0":"2025-12-27T09:33:44.422Z","1.33.0":"2025-12-30T03:30:21.373Z","1.34.0":"2026-01-01T11:20:09.036Z","1.35.0":"2026-01-01T20:23:41.976Z","1.36.0":"2026-01-07T08:04:03.551Z","1.37.0":"2026-01-08T22:10:57.832Z"},"bugs":{"url":"https://github.com/becomevocal/vanilla-agent/issues"},"license":"MIT","homepage":"https://github.com/becomevocal/vanilla-agent#readme","keywords":["chat","widget","streaming","typescript"],"repository":{"type":"git","url":"git+https://github.com/becomevocal/vanilla-agent.git"},"description":"Themeable, plugable streaming agent widget for websites, in plain JS with support for voice input and reasoning / tool output.","maintainers":[{"name":"becomevocal","email":"nate.stewart@bigcommerce.com"}],"readme":"## Streaming Agent Widget\n\nInstallable vanilla JavaScript widget for embedding a streaming AI assistant on any website.\n\n### Installation\n\n```bash\nnpm install vanilla-agent\n```\n\n### Building locally\n\n```bash\npnpm build\n```\n\n- `dist/index.js` (ESM), `dist/index.cjs` (CJS), and `dist/index.global.js` (IIFE) provide different module formats.\n- `dist/widget.css` is the prefixed Tailwind bundle.\n- `dist/install.global.js` is the automatic installer script for easy script tag installation.\n\n### Using with modules\n\n```ts\nimport 'vanilla-agent/widget.css';\nimport {\n  initAgentWidget,\n  createAgentExperience,\n  markdownPostprocessor,\n  DEFAULT_WIDGET_CONFIG\n} from 'vanilla-agent';\n\nconst proxyUrl = '/api/chat/dispatch';\n\n// Inline embed\nconst inlineHost = document.querySelector('#inline-widget')!;\ncreateAgentExperience(inlineHost, {\n  ...DEFAULT_WIDGET_CONFIG,\n  apiUrl: proxyUrl,\n  launcher: { enabled: false },\n  theme: {\n    ...DEFAULT_WIDGET_CONFIG.theme,\n    accent: '#2563eb'\n  },\n  suggestionChips: ['What can you do?', 'Show API docs'],\n  postprocessMessage: ({ text }) => markdownPostprocessor(text)\n});\n\n// Floating launcher with runtime updates\nconst controller = initAgentWidget({\n  target: '#launcher-root',\n  windowKey: 'chatController', // Optional: stores controller on window.chatController\n  config: {\n    ...DEFAULT_WIDGET_CONFIG,\n    apiUrl: proxyUrl,\n    launcher: {\n      ...DEFAULT_WIDGET_CONFIG.launcher,\n      title: 'AI Assistant',\n      subtitle: 'Here to help you get answers fast'\n    }\n  }\n});\n\n// Runtime theme update\ndocument.querySelector('#dark-mode')?.addEventListener('click', () => {\n  controller.update({ theme: { surface: '#0f172a', primary: '#f8fafc' } });\n});\n```\n\n### Initialization options\n\n`initAgentWidget` accepts the following options:\n\n| Option | Type | Description |\n| --- | --- | --- |\n| `target` | `string \\| HTMLElement` | CSS selector or element where widget mounts. |\n| `config` | `AgentWidgetConfig` | Widget configuration object (see [Configuration reference](#configuration-reference) below). |\n| `useShadowDom` | `boolean` | Use Shadow DOM for style isolation (default: `true`). |\n| `onReady` | `() => void` | Callback fired when widget is initialized. |\n| `windowKey` | `string` | If provided, stores the controller on `window[windowKey]` for global access. Automatically cleaned up on `destroy()`. |\n| `previewQueryParam` | `string` | Preview mode: only initialize the widget when this URL query parameter is present (e.g., `\"preview-agent\"` requires `?preview-agent=true` in URL). Returns `null` if param is missing. |\n\n> **Security note:** When you return HTML from `postprocessMessage`, make sure you sanitise it before injecting into the page. The provided postprocessors (`markdownPostprocessor`, `directivePostprocessor`) do not perform sanitisation.\n\n\n### Programmatic control\n\n`initAgentWidget` (and `createAgentExperience`) return a controller with methods to programmatically control the widget.\n\n#### Basic controls\n\n```ts\nconst chat = initAgentWidget({\n  target: '#launcher-root',\n  config: { /* ... */ }\n})\n\ndocument.getElementById('open-chat')?.addEventListener('click', () => chat.open())\ndocument.getElementById('toggle-chat')?.addEventListener('click', () => chat.toggle())\ndocument.getElementById('close-chat')?.addEventListener('click', () => chat.close())\n```\n\n#### Message hooks\n\nYou can programmatically set messages, submit messages, and control voice recognition:\n\n```ts\nconst chat = initAgentWidget({\n  target: '#launcher-root',\n  config: { /* ... */ }\n})\n\n// Set a message in the input field (doesn't submit)\nchat.setMessage(\"Hello, I need help\")\n\n// Submit a message (uses textarea value if no argument provided)\nchat.submitMessage()\n// Or submit a specific message\nchat.submitMessage(\"What are your hours?\")\n\n// Start voice recognition\nchat.startVoiceRecognition()\n\n// Stop voice recognition\nchat.stopVoiceRecognition()\n```\n\nAll hook methods return `boolean` indicating success (`true`) or failure (`false`). They will automatically open the widget if it's currently closed (when launcher is enabled).\n\n#### Clear chat\n\n```ts\nconst chat = initAgentWidget({\n  target: '#launcher-root',\n  config: { /* ... */ }\n})\n\n// Clear all messages programmatically\nchat.clearChat()\n```\n\n#### Accessing from window\n\nTo access the controller globally (e.g., from browser console or external scripts), use the `windowKey` option:\n\n```ts\nconst chat = initAgentWidget({\n  target: '#launcher-root',\n  windowKey: 'chatController', // Stores controller on window.chatController\n  config: { /* ... */ }\n})\n\n// Now accessible globally\nwindow.chatController.setMessage(\"Hello from console!\")\nwindow.chatController.submitMessage(\"Test message\")\nwindow.chatController.startVoiceRecognition()\n```\n\n#### Message Types\n\nThe widget uses `AgentWidgetMessage` objects to represent messages in the conversation. You can access these through `postprocessMessage` callbacks or by inspecting the session's message array.\n\n```typescript\ntype AgentWidgetMessage = {\n  id: string;                    // Unique message identifier\n  role: \"user\" | \"assistant\" | \"system\";\n  content: string;               // Message text content\n  createdAt: string;             // ISO timestamp\n  streaming?: boolean;           // Whether message is still streaming\n  variant?: \"assistant\" | \"reasoning\" | \"tool\";\n  sequence?: number;             // Message ordering\n  reasoning?: AgentWidgetReasoning;\n  toolCall?: AgentWidgetToolCall;\n  tools?: AgentWidgetToolCall[];\n  viaVoice?: boolean;            // Indicates if user message was sent via voice input\n};\n```\n\n**`viaVoice` field**: Set to `true` when a user message is sent through voice recognition. This allows you to implement voice-specific behaviors, such as automatically reactivating voice recognition after assistant responses. You can check this field in your `postprocessMessage` callback:\n\n```ts\npostprocessMessage: ({ message, text, streaming }) => {\n  if (message.role === 'user' && message.viaVoice) {\n    console.log('User sent message via voice');\n  }\n  return text;\n}\n```\n\nAlternatively, manually assign the controller:\n\n```ts\nconst chat = initAgentWidget({ /* ... */ })\nwindow.chatController = chat\n```\n\n### Events\n\nThe widget dispatches custom events that you can listen to for integration with your application:\n\n#### `vanilla-agent:clear-chat`\n\nDispatched when the user clicks the \"Clear chat\" button or when `chat.clearChat()` is called programmatically.\n\n```ts\nwindow.addEventListener(\"vanilla-agent:clear-chat\", (event) => {\n  console.log(\"Chat cleared at:\", event.detail.timestamp);\n  // Clear your localStorage, reset state, etc.\n});\n```\n\n**Event detail:**\n- `timestamp`: ISO timestamp string of when the chat was cleared\n\n**Use cases:**\n- Clear localStorage chat history\n- Reset application state\n- Track analytics events\n- Sync with backend\n\n**Note:** The widget automatically clears the `\"vanilla-agent-chat-history\"` localStorage key by default when chat is cleared. If you set `clearChatHistoryStorageKey` in the config, it will also clear that additional key. You can still listen to this event for additional custom behavior.\n\n### Message Actions (Copy, Upvote, Downvote)\n\nThe widget includes built-in action buttons for assistant messages that allow users to copy message content and provide feedback through upvote/downvote buttons.\n\n#### Configuration\n\n```ts\nconst controller = initAgentWidget({\n  target: '#app',\n  config: {\n    apiUrl: '/api/chat/dispatch',\n    \n    // Message actions configuration\n    messageActions: {\n      enabled: true,              // Enable/disable all action buttons (default: true)\n      showCopy: true,             // Show copy button (default: true)\n      showUpvote: true,           // Show upvote button (default: false - requires backend)\n      showDownvote: true,         // Show downvote button (default: false - requires backend)\n      visibility: 'hover',        // 'hover' or 'always' (default: 'hover')\n      align: 'right',             // 'left', 'center', or 'right' (default: 'right')\n      layout: 'pill-inside',      // 'pill-inside' (compact floating) or 'row-inside' (full-width bar)\n      \n      // Optional callbacks (called in addition to events)\n      onCopy: (message) => {\n        console.log('Copied:', message.id);\n      },\n      onFeedback: (feedback) => {\n        console.log('Feedback:', feedback.type, feedback.messageId);\n        // Send to your analytics/backend\n        fetch('/api/feedback', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify(feedback)\n        });\n      }\n    }\n  }\n});\n```\n\n#### Feedback Events\n\nListen to feedback events via the controller:\n\n```ts\n// Copy event - fired when user copies a message\ncontroller.on('message:copy', (message) => {\n  console.log('Message copied:', message.id, message.content);\n});\n\n// Feedback event - fired when user upvotes or downvotes\ncontroller.on('message:feedback', (feedback) => {\n  console.log('Feedback received:', {\n    type: feedback.type,         // 'upvote' or 'downvote'\n    messageId: feedback.messageId,\n    message: feedback.message    // Full message object\n  });\n});\n```\n\n#### Feedback Types\n\n```typescript\ntype AgentWidgetMessageFeedback = {\n  type: 'upvote' | 'downvote';\n  messageId: string;\n  message: AgentWidgetMessage;\n};\n\ntype AgentWidgetMessageActionsConfig = {\n  enabled?: boolean;\n  showCopy?: boolean;\n  showUpvote?: boolean;\n  showDownvote?: boolean;\n  visibility?: 'always' | 'hover';\n  onFeedback?: (feedback: AgentWidgetMessageFeedback) => void;\n  onCopy?: (message: AgentWidgetMessage) => void;\n};\n```\n\n#### Visual Behavior\n\n- **Hover mode** (`visibility: 'hover'`): Action buttons appear when hovering over assistant messages\n- **Always mode** (`visibility: 'always'`): Action buttons are always visible\n- **Copy button**: Shows a checkmark briefly after successful copy\n- **Vote buttons**: Toggle active state and are mutually exclusive (upvoting clears downvote and vice versa)\n\n### Travrse adapter\n\nThis package ships with a Travrse adapter by default. The proxy handles all flow configuration, keeping the client lightweight and flexible.\n\n**Flow configuration happens server-side** - you have three options:\n\n1. **Use default flow** - The proxy includes a basic streaming chat flow out of the box\n2. **Reference a Travrse flow ID** - Configure flows in your Travrse dashboard and reference them by ID\n3. **Define custom flows** - Build flow configurations directly in the proxy\n\nThe client simply sends messages to the proxy, which constructs the full Travrse payload. This architecture allows you to:\n- Change models/prompts without redeploying the widget\n- A/B test different flows server-side\n- Enforce security and cost controls centrally\n- Support multiple flows for different use cases\n\n### Dynamic Forms (Recommended)\n\nFor rendering AI-generated forms, use the **component middleware** approach with the `DynamicForm` component. This allows the AI to create contextually appropriate forms with any fields:\n\n```typescript\nimport { componentRegistry, initAgentWidget } from \"vanilla-agent\";\nimport { DynamicForm } from \"./components\"; // Your DynamicForm component\n\n// Register the component\ncomponentRegistry.register(\"DynamicForm\", DynamicForm);\n\ninitAgentWidget({\n  target: \"#app\",\n  config: {\n    apiUrl: \"/api/chat/dispatch-directive\",\n    parserType: \"json\",\n    enableComponentStreaming: true,\n    formEndpoint: \"/form\",\n    // Optional: customize form appearance\n    formStyles: {\n      borderRadius: \"16px\",\n      borderWidth: \"1px\",\n      borderColor: \"#e5e7eb\",\n      padding: \"1.5rem\",\n      titleFontSize: \"1.25rem\",\n      buttonBorderRadius: \"9999px\"\n    }\n  }\n});\n```\n\nThe AI responds with JSON like:\n\n```json\n{\n  \"text\": \"Please fill out this form:\",\n  \"component\": \"DynamicForm\",\n  \"props\": {\n    \"title\": \"Contact Us\",\n    \"fields\": [\n      { \"label\": \"Name\", \"type\": \"text\", \"required\": true },\n      { \"label\": \"Email\", \"type\": \"email\", \"required\": true }\n    ],\n    \"submit_text\": \"Submit\"\n  }\n}\n```\n\nSee `examples/embedded-app/json.html` for a full working example.\n\n### Directive postprocessor (Deprecated)\n\n> **⚠️ Deprecated:** The `directivePostprocessor` approach is deprecated in favor of the component middleware with `DynamicForm`. The old approach only supports predefined form templates (\"init\" and \"followup\"), while the new approach allows AI-generated forms with any fields.\n\n`directivePostprocessor` looks for either `<Form type=\"init\" />` tokens or\n`<Directive>{\"component\":\"form\",\"type\":\"init\"}</Directive>` blocks and swaps them for placeholders that the widget upgrades into interactive UI. This approach is limited to the predefined form templates in `formDefinitions`.\n\n### Script tag installation\n\nThe widget can be installed via a simple script tag, perfect for platforms where you can't compile custom code. There are two methods:\n\n#### Method 1: Automatic installer (recommended)\n\nThe easiest way is to use the automatic installer script. It handles loading CSS and JavaScript, then initializes the widget automatically:\n\n```html\n<!-- Add this before the closing </body> tag -->\n<script>\n  window.siteAgentConfig = {\n    target: 'body', // or '#my-container' for specific placement\n    config: {\n      apiUrl: 'https://your-proxy.com/api/chat/dispatch',\n      launcher: {\n        enabled: true,\n        title: 'AI Assistant',\n        subtitle: 'How can I help you?'\n      },\n      theme: {\n        accent: '#2563eb',\n        surface: '#ffffff'\n      },\n      // Optional: configure stream parser for JSON/XML responses\n      // streamParser: () => window.AgentWidget.createJsonStreamParser()\n    }\n  };\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js\"></script>\n```\n\n**Installer options:**\n\n- `version` - Package version to load (default: `\"latest\"`)\n- `cdn` - CDN provider: `\"jsdelivr\"` or `\"unpkg\"` (default: `\"jsdelivr\"`)\n- `cssUrl` - Custom CSS URL (overrides CDN)\n- `jsUrl` - Custom JS URL (overrides CDN)\n- `target` - CSS selector or element where widget mounts (default: `\"body\"`)\n- `config` - Widget configuration object (see Configuration reference)\n- `autoInit` - Automatically initialize after loading (default: `true`)\n\n**Example with version pinning:**\n\n```html\n<script>\n  window.siteAgentConfig = {\n    version: '0.1.0', // Pin to specific version\n    config: {\n      apiUrl: '/api/chat/dispatch',\n      launcher: { enabled: true, title: 'Support Chat' }\n    }\n  };\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@0.1.0/dist/install.global.js\"></script>\n```\n\n#### Method 2: Manual installation\n\nFor more control, manually load CSS and JavaScript:\n\n```html\n<!-- Load CSS -->\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/widget.css\" />\n\n<!-- Load JavaScript -->\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/index.global.js\"></script>\n\n<!-- Initialize widget -->\n<script>\n  const chatController = window.AgentWidget.initAgentWidget({\n    target: '#vanilla-agent-anchor', // or 'body' for floating launcher\n    windowKey: 'chatWidget', // Optional: stores controller on window.chatWidget\n    config: {\n      apiUrl: '/api/chat/dispatch',\n      launcher: {\n        enabled: true,\n        title: 'AI Assistant',\n        subtitle: 'Here to help'\n      },\n      theme: {\n        accent: '#111827',\n        surface: '#f5f5f5'\n      },\n      // Optional: configure stream parser for JSON/XML responses\n      streamParser: window.AgentWidget.createJsonStreamParser // or createXmlParser, createPlainTextParser\n    }\n  });\n  \n  // Controller is now available as window.chatWidget (if windowKey was used)\n  // or use the returned chatController variable\n</script>\n```\n\n**CDN options:**\n\n- **jsDelivr** (recommended): `https://cdn.jsdelivr.net/npm/vanilla-agent@VERSION/dist/`\n- **unpkg**: `https://unpkg.com/vanilla-agent@VERSION/dist/`\n\nReplace `VERSION` with `latest` for auto-updates, or a specific version like `0.1.0` for stability.\n\n**Available files:**\n\n- `widget.css` - Stylesheet (required)\n- `index.global.js` - Widget JavaScript (IIFE format)\n- `install.global.js` - Automatic installer script\n\nThe script build exposes a `window.AgentWidget` global with `initAgentWidget()` and other exports, including parser functions:\n\n- `window.AgentWidget.initAgentWidget()` - Initialize the widget\n- `window.AgentWidget.createPlainTextParser()` - Plain text parser (default)\n- `window.AgentWidget.createJsonStreamParser()` - JSON parser using schema-stream\n- `window.AgentWidget.createXmlParser()` - XML parser\n- `window.AgentWidget.markdownPostprocessor()` - Markdown postprocessor\n- `window.AgentWidget.directivePostprocessor()` - Directive postprocessor *(deprecated)*\n- `window.AgentWidget.componentRegistry` - Component registry for custom components\n\n### React Framework Integration\n\nThe widget is fully compatible with React frameworks. Use the ESM imports to integrate it as a client component.\n\n#### Framework Compatibility\n\n| Framework | Compatible | Implementation Notes |\n|-----------|------------|---------------------|\n| **Vite** | ✅ Yes | No special requirements - works out of the box |\n| **Create React App** | ✅ Yes | No special requirements - works out of the box |\n| **Next.js** | ✅ Yes | Requires `'use client'` directive (App Router) |\n| **Remix** | ✅ Yes | Use dynamic import or `useEffect` guard for SSR |\n| **Gatsby** | ✅ Yes | Use in `wrapRootElement` or check `typeof window !== 'undefined'` |\n| **Astro** | ✅ Yes | Use `client:load` or `client:only=\"react\"` directive |\n\n#### Quick Start with Vite or Create React App\n\nFor client-side-only React frameworks (Vite, CRA), create a component:\n\n```typescript\n// src/components/ChatWidget.tsx\nimport { useEffect } from 'react';\nimport 'vanilla-agent/widget.css';\nimport { initAgentWidget, markdownPostprocessor } from 'vanilla-agent';\nimport type { AgentWidgetInitHandle } from 'vanilla-agent';\n\nexport function ChatWidget() {\n  useEffect(() => {\n    let handle: AgentWidgetInitHandle | null = null;\n    \n    handle = initAgentWidget({\n      target: 'body',\n      config: {\n        apiUrl: \"/api/chat/dispatch\",\n        theme: {\n          primary: \"#111827\",\n          accent: \"#1d4ed8\",\n        },\n        launcher: {\n          enabled: true,\n          title: \"Chat Assistant\",\n          subtitle: \"Here to help you get answers fast\"\n        },\n        postprocessMessage: ({ text }) => markdownPostprocessor(text)\n      }\n    });\n\n    // Cleanup on unmount\n    return () => {\n      if (handle) {\n        handle.destroy();\n      }\n    };\n  }, []);\n\n  return null; // Widget injects itself into the DOM\n}\n```\n\nThen use it in your app:\n\n```typescript\n// src/App.tsx\nimport { ChatWidget } from './components/ChatWidget';\n\nfunction App() {\n  return (\n    <div>\n      {/* Your app content */}\n      <ChatWidget />\n    </div>\n  );\n}\n\nexport default App;\n```\n\n#### Next.js Integration\n\nFor Next.js App Router, add the `'use client'` directive:\n\n```typescript\n// components/ChatWidget.tsx\n'use client';\n\nimport { useEffect } from 'react';\nimport 'vanilla-agent/widget.css';\nimport { initAgentWidget, markdownPostprocessor } from 'vanilla-agent';\nimport type { AgentWidgetInitHandle } from 'vanilla-agent';\n\nexport function ChatWidget() {\n  useEffect(() => {\n    let handle: AgentWidgetInitHandle | null = null;\n    \n    handle = initAgentWidget({\n      target: 'body',\n      config: {\n        apiUrl: \"/api/chat/dispatch\",\n        launcher: {\n          enabled: true,\n          title: \"Chat Assistant\",\n        },\n        postprocessMessage: ({ text }) => markdownPostprocessor(text)\n      }\n    });\n\n    return () => {\n      if (handle) {\n        handle.destroy();\n      }\n    };\n  }, []);\n\n  return null;\n}\n```\n\nUse it in your layout or page:\n\n```typescript\n// app/layout.tsx\nimport { ChatWidget } from '@/components/ChatWidget';\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        {children}\n        <ChatWidget />\n      </body>\n    </html>\n  );\n}\n```\n\n**Alternative: Dynamic Import (SSR-Safe)**\n\nIf you encounter SSR issues, use Next.js dynamic imports:\n\n```typescript\n// app/layout.tsx\nimport dynamic from 'next/dynamic';\n\nconst ChatWidget = dynamic(\n  () => import('@/components/ChatWidget').then(mod => mod.ChatWidget),\n  { ssr: false }\n);\n\nexport default function RootLayout({ children }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        {children}\n        <ChatWidget />\n      </body>\n    </html>\n  );\n}\n```\n\n#### Remix Integration\n\nFor Remix, guard the widget initialization with a client-side check:\n\n```typescript\n// app/components/ChatWidget.tsx\nimport { useEffect, useState } from 'react';\n\nexport function ChatWidget() {\n  const [mounted, setMounted] = useState(false);\n\n  useEffect(() => {\n    setMounted(true);\n    \n    // Dynamic import to avoid SSR issues\n    import('vanilla-agent/widget.css');\n    import('vanilla-agent').then(({ initAgentWidget, markdownPostprocessor }) => {\n      const handle = initAgentWidget({\n        target: 'body',\n        config: {\n          apiUrl: \"/api/chat/dispatch\",\n          launcher: { enabled: true },\n          postprocessMessage: ({ text }) => markdownPostprocessor(text)\n        }\n      });\n      \n      return () => handle?.destroy();\n    });\n  }, []);\n\n  if (!mounted) return null;\n  return null;\n}\n```\n\n#### Gatsby Integration\n\nUse Gatsby's `wrapRootElement` API:\n\n```typescript\n// gatsby-browser.js\nimport { ChatWidget } from './src/components/ChatWidget';\n\nexport const wrapRootElement = ({ element }) => (\n  <>\n    {element}\n    <ChatWidget />\n  </>\n);\n```\n\n#### Astro Integration\n\nUse Astro's client directives with React islands:\n\n```astro\n---\n// src/components/ChatWidget.astro\nimport { ChatWidget } from './ChatWidget.tsx';\n---\n\n<ChatWidget client:load />\n```\n\n#### Using the Theme Configurator\n\nFor easy configuration generation, use the [Theme Configurator](https://github.com/becomevocal/chaty/tree/main/examples/embedded-app) which includes a \"React (Client Component)\" export option. It generates a complete React component with your custom theme, launcher settings, and all configuration options.\n\n#### Installation\n\n```bash\nnpm install vanilla-agent\n# or\npnpm add vanilla-agent\n# or\nyarn add vanilla-agent\n```\n\n#### Key Considerations\n\n1. **CSS Import**: The CSS import (`import 'vanilla-agent/widget.css'`) works natively with all modern React build tools\n2. **Client-Side Only**: The widget manipulates the DOM, so it must run client-side only\n3. **Cleanup**: Always call `handle.destroy()` in the cleanup function to prevent memory leaks\n4. **API Routes**: Ensure your `apiUrl` points to a valid backend endpoint\n5. **TypeScript Support**: Full TypeScript definitions are included for all exports\n\n### Using default configuration\n\nThe package exports a complete default configuration that you can use as a base:\n\n```ts\nimport { DEFAULT_WIDGET_CONFIG, mergeWithDefaults } from 'vanilla-agent';\n\n// Option 1: Use defaults with selective overrides\nconst controller = initAgentWidget({\n  target: '#app',\n  config: {\n    ...DEFAULT_WIDGET_CONFIG,\n    apiUrl: '/api/chat/dispatch',\n    theme: {\n      ...DEFAULT_WIDGET_CONFIG.theme,\n      accent: '#custom-color'  // Override only what you need\n    }\n  }\n});\n\n// Option 2: Use the merge helper\nconst controller = initAgentWidget({\n  target: '#app',\n  config: mergeWithDefaults({\n    apiUrl: '/api/chat/dispatch',\n    theme: { accent: '#custom-color' }\n  })\n});\n```\n\nThis ensures all configuration values are set to sensible defaults while allowing you to customize only what you need.\n\n### Configuration reference\n\n| Option | Type | Description |\n| --- | --- | --- |\n| `apiUrl` | `string` | Proxy endpoint for your chat backend (defaults to Travrse's cloud API). |\n| `flowId` | `string` | Optional Travrse flow ID. If provided, the client sends it to the proxy which can use it to select a specific flow. |\n| `headers` | `Record<string, string>` | Extra headers forwarded to your proxy. |\n| `copy` | `{ welcomeTitle?, welcomeSubtitle?, inputPlaceholder?, sendButtonLabel? }` | Customize user-facing text. |\n| `theme` | `{ primary?, secondary?, surface?, muted?, accent?, radiusSm?, radiusMd?, radiusLg?, radiusFull? }` | Override CSS variables for the widget. Colors: `primary` (text/UI), `secondary` (unused), `surface` (backgrounds), `muted` (secondary text), `accent` (buttons/links). Border radius: `radiusSm` (0.75rem, inputs), `radiusMd` (1rem, cards), `radiusLg` (1.5rem, panels/bubbles), `radiusFull` (9999px, pills/buttons). |\n| `features` | `AgentWidgetFeatureFlags` | Toggle UI features: `showReasoning?` (show thinking bubbles, default: `true`), `showToolCalls?` (show tool usage bubbles, default: `true`). |\n| `launcher` | `{ enabled?, autoExpand?, title?, subtitle?, iconUrl?, position? }` | Controls the floating launcher button. |\n| `initialMessages` | `AgentWidgetMessage[]` | Seed the conversation transcript. |\n| `suggestionChips` | `string[]` | Render quick reply buttons above the composer. |\n| `postprocessMessage` | `(ctx) => string` | Transform message text before it renders (return HTML). Combine with `markdownPostprocessor` for rich output. |\n| `parserType` | `\"plain\" \\| \"json\" \\| \"regex-json\" \\| \"xml\"` | Built-in parser type selector. Easy way to choose a parser without importing functions. Options: `\"plain\"` (default), `\"json\"` (partial-json), `\"regex-json\"` (regex-based), `\"xml\"`. If both `parserType` and `streamParser` are provided, `streamParser` takes precedence. |\n| `streamParser` | `() => AgentWidgetStreamParser` | Custom stream parser for detecting formats and extracting text from streaming responses. Handles JSON, XML, or custom formats. See [Stream Parser Configuration](#stream-parser-configuration) below. |\n| `clearChatHistoryStorageKey` | `string` | Additional localStorage key to clear when the clear chat button is clicked. The widget automatically clears `\"vanilla-agent-chat-history\"` by default. Use this option to clear additional keys (e.g., if you're using a custom storage key). |\n| `formEndpoint` | `string` | Endpoint used by built-in directives (defaults to `/form`). |\n| `launcherWidth` | `string` | CSS width applied to the floating launcher panel (e.g. `320px`, `90vw`). Defaults to `min(400px, calc(100vw - 24px))`. |\n| `persistState` | `boolean \\| AgentWidgetPersistStateConfig` | Persist widget state (open/closed, voice mode) across page navigations. Set to `true` for defaults or pass an object for fine-grained control. See [State Persistence](#state-persistence) below. |\n| `debug` | `boolean` | Emits verbose logs to `console`. |\n\nAll options are safe to mutate via `initAgentWidget(...).update(newConfig)`.\n\n### Stream Parser Configuration\n\nThe widget can parse structured responses (JSON, XML, etc.) that stream in chunk by chunk, extracting the `text` field for display. By default, it uses a plain text parser. You can easily select a built-in parser using `parserType`, or provide a custom parser via `streamParser`.\n\n**Key benefits of the unified stream parser:**\n- **Format detection**: Automatically detects if content matches your parser's format\n- **Extensible**: Handle JSON, XML, or any custom structured format\n- **Incremental parsing**: Extract text as it streams in, not just when complete\n\n**Quick start with `parserType` (recommended):**\n\nThe easiest way to use a built-in parser is with the `parserType` option:\n\n```javascript\nimport { initAgentWidget } from 'vanilla-agent';\n\nconst controller = initAgentWidget({\n  target: '#chat-root',\n  config: {\n    apiUrl: '/api/chat/dispatch',\n    parserType: 'json'  // Options: 'plain', 'json', 'regex-json', 'xml'\n  }\n});\n```\n\n**Using built-in parsers with `streamParser` (ESM/Modules):**\n\n```javascript\nimport { initAgentWidget, createPlainTextParser, createJsonStreamParser, createXmlParser } from 'vanilla-agent';\n\nconst controller = initAgentWidget({\n  target: '#chat-root',\n  config: {\n    apiUrl: '/api/chat/dispatch',\n    streamParser: createJsonStreamParser // Use JSON parser\n    // Or: createXmlParser for XML, createPlainTextParser for plain text (default)\n  }\n});\n```\n\n**Using built-in parsers with CDN Script Tags:**\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/index.global.js\"></script>\n<script>\n  window.AgentWidget.initAgentWidget({\n    target: '#chat-root',\n    config: {\n      apiUrl: '/api/chat/dispatch',\n      streamParser: window.AgentWidget.createJsonStreamParser // JSON parser\n      // Or: window.AgentWidget.createXmlParser for XML\n      // Or: window.AgentWidget.createPlainTextParser for plain text (default)\n    }\n  });\n</script>\n```\n\n**Using with automatic installer script:**\n\n```html\n<script>\n  window.siteAgentConfig = {\n    target: 'body',\n    config: {\n      apiUrl: '/api/chat/dispatch',\n      parserType: 'json'  // Simple way to select parser - no function imports needed!\n    }\n  };\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js\"></script>\n```\n\n**Alternative: Using `streamParser` with installer script:**\n\nIf you need a custom parser, you can still use `streamParser`:\n\n```html\n<script>\n  window.siteAgentConfig = {\n    target: 'body',\n    config: {\n      apiUrl: '/api/chat/dispatch',\n      // Note: streamParser must be set after the script loads, or use a function\n      streamParser: function() {\n        return window.AgentWidget.createJsonStreamParser();\n      }\n    }\n  };\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js\"></script>\n```\n\nAlternatively, you can set it after the script loads:\n\n```html\n<script>\n  window.siteAgentConfig = {\n    target: 'body',\n    config: {\n      apiUrl: '/api/chat/dispatch'\n    }\n  };\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js\"></script>\n<script>\n  // Set parser after AgentWidget is loaded\n  if (window.siteAgentConfig && window.AgentWidget) {\n    window.siteAgentConfig.config.streamParser = window.AgentWidget.createJsonStreamParser;\n  }\n</script>\n```\n\n**Custom JSON parser example:**\n\n```javascript\nconst jsonParser = () => {\n  let extractedText = null;\n  \n  return {\n    // Extract text field from JSON as it streams in\n    // Return null if not JSON or text not available yet\n    processChunk(accumulatedContent) {\n      const trimmed = accumulatedContent.trim();\n      // Return null if not JSON format\n      if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) {\n        return null;\n      }\n      \n      const match = accumulatedContent.match(/\"text\"\\s*:\\s*\"([^\"]*(?:\\\\.[^\"]*)*)\"/);\n      if (match) {\n        extractedText = match[1].replace(/\\\\\"/g, '\"').replace(/\\\\n/g, '\\n');\n        return extractedText;\n      }\n      return null;\n    },\n    \n    getExtractedText() {\n      return extractedText;\n    }\n  };\n};\n\ninitAgentWidget({\n  target: '#chat-root',\n  config: {\n    apiUrl: '/api/chat/dispatch',\n    streamParser: jsonParser,\n    postprocessMessage: ({ text, raw }) => {\n      // raw contains the structured payload (JSON, XML, etc.)\n      return markdownPostprocessor(text);\n    }\n  }\n});\n```\n\n**Custom XML parser example:**\n\n```javascript\nconst xmlParser = () => {\n  let extractedText = null;\n  \n  return {\n    processChunk(accumulatedContent) {\n      // Return null if not XML format\n      if (!accumulatedContent.trim().startsWith('<')) {\n        return null;\n      }\n      \n      // Extract text from <text>...</text> tags\n      const match = accumulatedContent.match(/<text[^>]*>([\\s\\S]*?)<\\/text>/);\n      if (match) {\n        extractedText = match[1];\n        return extractedText;\n      }\n      return null;\n    },\n    \n    getExtractedText() {\n      return extractedText;\n    }\n  };\n};\n```\n\n**Parser interface:**\n\n```typescript\ninterface AgentWidgetStreamParser {\n  // Process a chunk and return extracted text (if available)\n  // Return null if the content doesn't match this parser's format or text is not yet available\n  processChunk(accumulatedContent: string): Promise<string | null> | string | null;\n  \n  // Get the currently extracted text (may be partial)\n  getExtractedText(): string | null;\n  \n  // Optional cleanup when parsing is complete\n  close?(): Promise<void> | void;\n}\n```\n\nThe parser's `processChunk` method is called for each chunk. If the content matches your parser's format, return the extracted text and the raw payload. Built-in parsers already do this, so action handlers and middleware can read the original structured content without re-implementing a parser. Return `null` if the chunk isn't ready yet—the widget will keep waiting or fall back to plain text.\n\n### State Persistence\n\nThe widget can automatically persist its state (open/closed, voice recognition mode) across page navigations using `localStorage` or `sessionStorage`. This is useful for multi-page websites where users navigate between pages.\n\n**Simple usage:**\n\n```typescript\ninitAgentWidget({\n  target: 'body',\n  config: {\n    apiUrl: '/api/chat/dispatch',\n    persistState: true  // Enable with defaults\n  }\n});\n```\n\nWhen enabled, the widget automatically:\n- Re-opens if it was open before navigation\n- Resumes voice recognition if it was active\n- Focuses the text input if voice wasn't active\n- Clears persisted state when chat is cleared\n\n**Advanced configuration:**\n\n```typescript\ninitAgentWidget({\n  target: 'body',\n  config: {\n    apiUrl: '/api/chat/dispatch',\n    persistState: {\n      enabled: true,\n      persist: {\n        openState: true,    // Persist open/closed state (default: true)\n        voiceState: true,   // Persist voice recognition state (default: true)\n        focusInput: true    // Focus input after restore (default: true)\n      },\n      storage: 'localStorage',    // or 'sessionStorage' (default: 'localStorage')\n      keyPrefix: 'vanilla-agent-', // Storage key prefix (default: 'vanilla-agent-')\n      clearOnChatClear: true      // Clear state on chat clear (default: true)\n    }\n  }\n});\n```\n\n**With script tag installer:**\n\n```html\n<script>\n  window.siteAgentConfig = {\n    config: {\n      apiUrl: '/api/chat/dispatch',\n      persistState: true\n    }\n  };\n</script>\n<script src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js\"></script>\n```\n\n### Preview Mode\n\nThe widget supports a preview mode that only loads when a specific URL query parameter is present. This is useful for testing, staging, or sharing preview links.\n\n**Programmatic usage:**\n\n```typescript\nconst widget = initAgentWidget({\n  target: 'body',\n  previewQueryParam: 'preview-agent',  // Widget only loads with ?preview-agent=true\n  config: {\n    apiUrl: '/api/chat/dispatch'\n  }\n});\n\n// widget is null if preview param is missing\nif (widget) {\n  console.log('Widget initialized!');\n}\n```\n\n**With script tag installer:**\n\n```html\n<script \n  src=\"https://cdn.jsdelivr.net/npm/vanilla-agent@latest/dist/install.global.js\"\n  data-travrse-token=\"YOUR_TOKEN\"\n  data-preview-param=\"preview-agent\"\n></script>\n```\n\nThen visit your page with `?preview-agent=true` to load the widget.\n\n### Optional proxy server\n\nThe proxy server handles flow configuration and forwards requests to Travrse. You can configure it in three ways:\n\n**Option 1: Use default flow (recommended for getting started)**\n\n```ts\n// api/chat.ts\nimport { createChatProxyApp } from 'vanilla-agent-proxy';\n\nexport default createChatProxyApp({\n  path: '/api/chat/dispatch',\n  allowedOrigins: ['https://www.example.com']\n});\n```\n\n**Option 2: Reference a Travrse flow ID**\n\n```ts\nimport { createChatProxyApp } from 'vanilla-agent-proxy';\n\nexport default createChatProxyApp({\n  path: '/api/chat/dispatch',\n  allowedOrigins: ['https://www.example.com'],\n  flowId: 'flow_abc123' // Flow created in Travrse dashboard or API\n});\n```\n\n**Option 3: Define a custom flow**\n\n```ts\nimport { createChatProxyApp } from 'vanilla-agent-proxy';\n\nexport default createChatProxyApp({\n  path: '/api/chat/dispatch',\n  allowedOrigins: ['https://www.example.com'],\n  flowConfig: {\n    name: \"Custom Chat Flow\",\n    description: \"Specialized assistant flow\",\n    steps: [\n      {\n        id: \"custom_prompt\",\n        name: \"Custom Prompt\",\n        type: \"prompt\",\n        enabled: true,\n        config: {\n          model: \"meta/llama3.1-8b-instruct-free\",\n          responseFormat: \"markdown\",\n          outputVariable: \"prompt_result\",\n          userPrompt: \"{{user_message}}\",\n          systemPrompt: \"you are a helpful assistant, chatting with a user\",\n          previousMessages: \"{{messages}}\"\n        }\n      }\n    ]\n  }\n});\n```\n\n**Hosting on Vercel:**\n\n```ts\nimport { createVercelHandler } from 'vanilla-agent-proxy';\n\nexport default createVercelHandler({\n  allowedOrigins: ['https://www.example.com'],\n  flowId: 'flow_abc123' // Optional\n});\n```\n\n**Environment setup:**\n\nAdd `TRAVRSE_API_KEY` to your environment. The proxy constructs the Travrse payload (including flow configuration) and streams the response back to the client.\n\n### Development notes\n\n- The widget streams results using SSE and mirrors the backend `flow_complete`/`step_chunk` events.\n- Tailwind-esc classes are prefixed with `tvw-` and scoped to `#vanilla-agent-root`, so they won't collide with the host page.\n- Run `pnpm dev` from the repository root to boot the example proxy (`examples/proxy`) and the vanilla demo (`examples/embedded-app`).\n- The proxy prefers port `43111` but automatically selects the next free port if needed.\n","readmeFilename":"README.md"}