{"_id":"@albionlabs/chat-widget","_rev":"12-cf44dc20b16a9fab08517fd9bb8c8203","name":"@albionlabs/chat-widget","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@albionlabs/chat-widget","version":"0.1.0","_id":"@albionlabs/chat-widget@0.1.0","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"dist":{"shasum":"7a286c7b04839e20a17857ddeeb9ee5e2f501ed4","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.1.0.tgz","fileCount":29,"integrity":"sha512-StuLqKNq3kkH8Tm5XOtS/GXowV1ulbHD4w/ag/TPIVCLDS9DX/jM9VNeFAx0T72kUoovbcxZ2DbsHIbZklE35w==","signatures":[{"sig":"MEQCIHpaBLiDkfhP4XU0sblT2uj65bPfqkYKEDvkBMwvf7lgAiBfCb+B/lLVOfoLD88W/x/msbDZACujqnp3wmNdw1zFyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72805},"type":"module","_from":"file:albionlabs-chat-widget-0.1.0.tgz","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"alastairongalbion","email":"alastair@albionlabs.org"},"_resolved":"/private/var/folders/f7/1jr9kcrd0js7g04wj1cknrgw0000gn/T/7e7cf1608690a34d0f4c91757299d1a0/albionlabs-chat-widget-0.1.0.tgz","_integrity":"sha512-StuLqKNq3kkH8Tm5XOtS/GXowV1ulbHD4w/ag/TPIVCLDS9DX/jM9VNeFAx0T72kUoovbcxZ2DbsHIbZklE35w==","_npmVersion":"11.3.0","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"0.0.1","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.1.0_1773161892670_0.6322557125568089","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@albionlabs/chat-widget","version":"0.2.0","_id":"@albionlabs/chat-widget@0.2.0","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"92c5fba91bf2780c68410c519795353541a33abe","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.0.tgz","fileCount":31,"integrity":"sha512-r4dU/ohRPrqTI+mKqXThgznyPYdynMvgRY08eYc/7hPh/oTvNsSXuGoppBbGbVl9y2ZAZCCD1Fzya+0YiIKsTw==","signatures":[{"sig":"MEYCIQCeet6ChLT5gQ4KQKw5xOWAdg1Vemca4JY4Sz5PNawXsgIhAL+qiOYASiQ+Jd2PQSphtHBh5/AHtOLNzECIjA8OX9+X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73386},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"60845c27f53c1f4ae42c2b72a9817525066954a2","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.0_1773176375204_0.9820715885019746","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@albionlabs/chat-widget","version":"0.2.1","_id":"@albionlabs/chat-widget@0.2.1","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"8f06157ad1f3a69bc65a4a5fce3486ac2bb78eae","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.1.tgz","fileCount":31,"integrity":"sha512-uMvdyyQLgm/zQ9t0oULlEXY/kQbjWFUJYm2bOw7BQFjzE8C5R0YX/+7ktbnNqJQg0ttCVuMe3OEm3Wx0nXEJVw==","signatures":[{"sig":"MEUCIHjP59//pFWxbtbE9l2iIwY2LvO5LJiW1ioDPKDz2/zCAiEA2Jfm3gFbqia/QfkClyaAD++ErrducxORiDAo60EggbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73612},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"82f215943541197cb9eb9bc40922d606db5d6c2c","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.1_1773217491013_0.36136744403116006","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@albionlabs/chat-widget","version":"0.2.2","_id":"@albionlabs/chat-widget@0.2.2","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"11f62fd0ef40e92f68ffb53548e80e9b99783cd1","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.2.tgz","fileCount":31,"integrity":"sha512-i1s5cz0wF4RkqcU3v9SIoBpdpK5X7RpASRm8bMzmwS8quuOYLyz49nTZ7ZkvCNes2xCm1WdbNADG681CcVj0Vw==","signatures":[{"sig":"MEYCIQCRajf2SNYKgsMyH/OFX5IbXE/qskIsCDG9B1Ql44rvkAIhAO5cuDPSxIENwXgEK7RRpqRGT8nz6RN8blelxqxqA8CY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73671},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ee404e3cc76935892c72c114102890d72daf4bc0","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.2_1773222827973_0.12335630682951915","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@albionlabs/chat-widget","version":"0.2.3","_id":"@albionlabs/chat-widget@0.2.3","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"973efc75565a61543a7b609680d7af48de1ec64a","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.3.tgz","fileCount":31,"integrity":"sha512-Kxb/t9u8q0uN0LOJqIbL3BwtkqNZKeKwTlNL/D0azfeS1aGPMzaAH3U+pmyXwOka4i4H9iRrymj78sF+E1qeQQ==","signatures":[{"sig":"MEYCIQDFO42QRtZXV8bSHn3OIhUgzL6tpkvL4ACqRAz+r0MrsAIhAKS5g5pec4R5QZpd1CQaEcidAzgHRGBQhq24XnfmT4MM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73698},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c2034667fff99570fd3ed423b560de84522c6b51","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.3_1773226322175_0.13855214672860727","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@albionlabs/chat-widget","version":"0.2.4","_id":"@albionlabs/chat-widget@0.2.4","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"5ba486715ab25e7c2dba4b5e3f02dcbb3cbd61c6","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.4.tgz","fileCount":31,"integrity":"sha512-Tj9G5+vV2K7gDSYaglSPIWjT1QcCkz+XTj1OxqQ4SNGq6cB0ml2IH9eYUT1zN1FtsaYK7RXIXaUSnmRwSCcBjg==","signatures":[{"sig":"MEQCIBWqUjd7zeqVnRc11osv5yp33IYUoTxyyPmkvKUiX0UkAiBZvQeMZkcRV/9j7No5pRdXiB9/0N98LPqODO1e1s/GaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73898},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ff30cc0a47082ded69cbd7525a5802a0fee08774","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.4_1773229460312_0.945307157613221","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@albionlabs/chat-widget","version":"0.2.5","_id":"@albionlabs/chat-widget@0.2.5","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"398d1c44366146789474a89eba1e18306f38c1f7","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.5.tgz","fileCount":31,"integrity":"sha512-y/gAr6Af2N6lOG1fjLSJS+NX71B3zffXI88fGOwwSlICjVVzkSl/bxZFDWNzknCKSJJygBEOEdNClo2dJ8d7xw==","signatures":[{"sig":"MEYCIQDfS/MPiLs7C/ed8UpAy27mpYCbGdpOWi3ACD+5UsA7vwIhAIZVWAHxbiCOUIB+bTJm1sCEtD3xu2EpvYRA1pAEZMBc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73698},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6bb2c42a165e9cee8b66d9e0a6bd5d40d8f2576b","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.5_1773231037178_0.7793986287707324","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@albionlabs/chat-widget","version":"0.2.6","_id":"@albionlabs/chat-widget@0.2.6","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"96d1b2357dc8572f899322bdc767bdd217940623","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.6.tgz","fileCount":31,"integrity":"sha512-L/a8nKWhLpkuPPHVM8VitweWGA2Buhdy76R/Ia1wKkYCjZ+TilBw/xVAfffa6XrR97UthkZ0oOiymMOlsC0hJw==","signatures":[{"sig":"MEYCIQDylfEsQbEVOuA7UKLu4rbMUEmryqDODL8WE8mw7o1StwIhAKmwQJzvQt9CbH7C0/W6bMbCW+Uq0NmHowSY5jn9jF4b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73802},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"4a32ca0aa06f2013c58387c1452fc3485e53ed56","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.6_1773243763209_0.3070648980472448","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@albionlabs/chat-widget","version":"0.2.7","_id":"@albionlabs/chat-widget@0.2.7","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"a2c39956354b2e7d9c6d95c2cea945b4b858042b","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.7.tgz","fileCount":35,"integrity":"sha512-XwILK86ccyjThFZXMgAeCcFNhBk0I0db4TTSJyDwm/0BhqjqNwuaulvycWmYBABTKCJQCrRO5sULgn6bL5COkA==","signatures":[{"sig":"MEQCIFOqmUBTOudTCCtFpoigMCiJCo5laXfcF7EWirmCrvhQAiAxLvOeFlD023XOaUiIVSr47VYBP2S5uaO8RRVYitIgHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164405},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6507e4c234aac8ebc73b9d721f3ac1787e8bce47","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.0","description":"Embeddable Svelte 5 chat widget that connects to a quant.bot gateway via WebSocket. Supports wallet-based authentication (SIWE), on-chain transaction signing, and floating or inline layouts.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.7_1773255234470_0.7574762000466202","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@albionlabs/chat-widget","version":"0.2.8","_id":"@albionlabs/chat-widget@0.2.8","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"0d59f2ac4d77f44af4433ed4aeb962b2bd1d25c1","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.8.tgz","fileCount":38,"integrity":"sha512-J8UpWHtP/kgHvTMQeKTaP1xJensnL4s1POJxM3ArJya44lxP4NPqxx872a9e9E4dcynR/+YskNn4sZLVj2FEuw==","signatures":[{"sig":"MEYCIQCQ0CFeD2WDj0CLQAa71egnK3qOsKqi2mSY0kSIQ3TyTAIhALeHRyfInz3a0N9BMkFkOOvigH3ct8rA9nSWMXqvCvw2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252532},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"f41a53b9232002a1fbd72682a2c4ed4c92481bed","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.1","description":"Embeddable Svelte 5 chat widget that connects to a quant.bot gateway via WebSocket. Supports wallet-based authentication (SIWE), on-chain transaction signing, and floating or inline layouts.","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.8_1773308488892_0.7310135346865665","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@albionlabs/chat-widget","version":"0.2.9","_id":"@albionlabs/chat-widget@0.2.9","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"homepage":"https://github.com/albionlabs/quant.bot#readme","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"dist":{"shasum":"86c5b4479ea046e020fe9d653a76997846e0b88d","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.2.9.tgz","fileCount":38,"integrity":"sha512-EgbARDHuXk7ODP4z56itgdE0TgqIHg16G/qi1fU/nRzU24NJ8UGuoLrlaQ0apyBkNKXrNhZJNDmF8AndAZvibQ==","signatures":[{"sig":"MEUCIDwJOcty9FhNWIEGQzLRGDrWcN4lBz4AZD1Kteo+YheZAiEAyPmv1YEqm945AstNE2fom9FNpXGYjo5LCstmLtXm5Tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":253595},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"6d5289d2d5e99616714d1378df58b11ecc4020c8","scripts":{"lint":"eslint src/","build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"repository":{"url":"git+https://github.com/albionlabs/quant.bot.git","type":"git","directory":"packages/chat-widget"},"_npmVersion":"11.11.1","description":"Embeddable Svelte 5 chat widget that connects to a quant.bot gateway via WebSocket. Supports wallet-based authentication (SIWE), on-chain transaction signing, and floating or inline layouts.","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.0","svelte":"^5.0.0","typescript":"^5.9.3","svelte-check":"^4.0.0","@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-widget_0.2.9_1773851927484_0.77779932450572","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@albionlabs/chat-widget","version":"0.3.0","type":"module","repository":{"type":"git","url":"git+https://github.com/albionlabs/quant.bot.git","directory":"packages/chat-widget"},"svelte":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"svelte-package","check":"svelte-check --tsconfig ./tsconfig.json","lint":"eslint src/"},"peerDependencies":{"svelte":"^5.0.0"},"devDependencies":{"@quant-bot/config":"workspace:*","@sveltejs/package":"^2.3.0","svelte":"^5.0.0","svelte-check":"^4.0.0","@sveltejs/vite-plugin-svelte":"^5.0.0","typescript":"^5.9.3","vite":"^6.3.0"},"gitHead":"b46d2f2638e4d5bf25e5ba651d741db93fd3944c","_id":"@albionlabs/chat-widget@0.3.0","description":"Embeddable Svelte 5 chat widget that connects to a quant.bot gateway via WebSocket. Supports wallet-based authentication (SIWE), on-chain transaction signing, and floating or inline layouts.","bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"homepage":"https://github.com/albionlabs/quant.bot#readme","_nodeVersion":"22.22.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-qneXuFmsWKChCjkHNUu/Ezz1YBPsGy1sIyYIVtI9aiW6dhwcDSG2HESGVTi197ZeC+PHd5U8a/5RnDxXwxw5VQ==","shasum":"3882061cdee9a3c9c0a0912df20eebd6bf7d180d","tarball":"https://registry.npmjs.org/@albionlabs/chat-widget/-/chat-widget-0.3.0.tgz","fileCount":38,"unpackedSize":260925,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@albionlabs%2fchat-widget@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDpMF4OJFi3BHORwxMTBbrrQoDQGwXIDyjy0nQui+y/3AIhAJamw0aGeZ5zBNE4rDMU/rAvtYa95VMwu63VJeTenBSs"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fbceb007-2fa4-44ab-850f-c9650af0b72d"}},"directories":{},"maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chat-widget_0.3.0_1775043645161_0.13093349756196182"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T16:58:12.574Z","modified":"2026-04-01T11:40:45.645Z","0.1.0":"2026-03-10T16:58:12.833Z","0.2.0":"2026-03-10T20:59:35.357Z","0.2.1":"2026-03-11T08:24:51.157Z","0.2.2":"2026-03-11T09:53:48.133Z","0.2.3":"2026-03-11T10:52:02.312Z","0.2.4":"2026-03-11T11:44:20.559Z","0.2.5":"2026-03-11T12:10:37.322Z","0.2.6":"2026-03-11T15:42:43.344Z","0.2.7":"2026-03-11T18:53:54.637Z","0.2.8":"2026-03-12T09:41:29.039Z","0.2.9":"2026-03-18T16:38:47.723Z","0.3.0":"2026-04-01T11:40:45.308Z"},"bugs":{"url":"https://github.com/albionlabs/quant.bot/issues"},"homepage":"https://github.com/albionlabs/quant.bot#readme","repository":{"type":"git","url":"git+https://github.com/albionlabs/quant.bot.git","directory":"packages/chat-widget"},"description":"Embeddable Svelte 5 chat widget that connects to a quant.bot gateway via WebSocket. Supports wallet-based authentication (SIWE), on-chain transaction signing, and floating or inline layouts.","maintainers":[{"name":"alastairongalbion","email":"alastair@albionlabs.org"}],"readme":"# @albionlabs/chat-widget\n\nEmbeddable Svelte 5 chat widget that connects to a quant.bot gateway via WebSocket. Supports wallet-based authentication (SIWE), on-chain transaction signing, and floating or inline layouts.\n\n## Install\n\n```bash\nnpm install @albionlabs/chat-widget\n# or\npnpm add @albionlabs/chat-widget\n```\n\n**Peer dependency:** Svelte 5+\n\n## Quick Start (Floating Widget)\n\nThe `ChatWidgetFloating` component is the recommended integration. It renders a floating chat bubble in the corner of your page with built-in SIWE authentication, transaction signing, and unread message tracking.\n\n```svelte\n<script lang=\"ts\">\n  import { ChatWidgetFloating, setWalletProvider, clearWalletProvider } from '@albionlabs/chat-widget'\n\n  // Your wallet connection logic — any EIP-1193 provider works\n  let walletProvider = $state(null)\n\n  function connectWallet() {\n    // Use your preferred wallet SDK (wagmi, Dynamic, RainbowKit, etc.)\n    // Once connected, call setWalletProvider() with the EIP-1193 provider\n  }\n\n  $effect(() => {\n    if (walletProvider) {\n      setWalletProvider(walletProvider)\n    } else {\n      clearWalletProvider()\n    }\n  })\n</script>\n\n<ChatWidgetFloating\n  config={{ gatewayUrl: 'https://your-gateway.example.com', apiKey: 'your-api-key' }}\n  callbacks={{ onRequestWalletConnect: connectWallet }}\n/>\n```\n\nThat's it. The widget handles SIWE sign-in, WebSocket connection, and chat UI automatically.\n\n## Configuration\n\n### `FloatingChatWidgetConfig`\n\n| Property | Type | Required | Default | Description |\n|----------|------|----------|---------|-------------|\n| `gatewayUrl` | `string` | Yes | — | Gateway base URL (`https://` or `http://`). Converted to `wss://`/`ws://` internally. |\n| `apiKey` | `string` | Yes | — | API key provided by the gateway operator. |\n| `position` | `'bottom-right' \\| 'bottom-left'` | No | `'bottom-right'` | Corner placement of the floating bubble. |\n| `offset` | `{ x: number; y: number }` | No | `{ x: 24, y: 24 }` | Pixel offset from the corner. |\n| `startOpen` | `boolean` | No | `false` | Open the chat panel immediately on mount. |\n| `theme` | `'light' \\| 'dark'` | No | `'dark'` | Widget color theme. |\n| `name` | `string` | No | `'quant.bot'` | Display name shown in the header and SIWE sign-in message. |\n\n### `FloatingChatCallbacks`\n\n| Callback | Description |\n|----------|-------------|\n| `onRequestWalletConnect` | Fired when the user clicks \"Connect Wallet\" inside the widget. Use this to trigger your wallet SDK's connect flow. |\n| `onOpen` | Fired when the chat panel opens. |\n| `onClose` | Fired when the chat panel closes. |\n\n## Wallet Provider\n\nThe widget accepts any [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) compatible provider. This is the standard interface exposed by MetaMask, wagmi, Dynamic, RainbowKit, and most wallet SDKs.\n\n```typescript\ninterface WalletProvider {\n  request: (args: { method: string; params?: unknown[] }) => Promise<unknown>\n}\n```\n\nThe widget uses the following RPC methods through the provider:\n\n| Method | Purpose |\n|--------|---------|\n| `eth_accounts` | Get the connected wallet address |\n| `personal_sign` | Sign the SIWE authentication message |\n| `eth_sendTransaction` | Sign and send on-chain transactions (strategy deployments, approvals) |\n\n### Setting the provider\n\nCall `setWalletProvider()` whenever a wallet connects, and `clearWalletProvider()` when it disconnects. The widget detects these changes and manages authentication automatically.\n\n```typescript\nimport { setWalletProvider, clearWalletProvider } from '@albionlabs/chat-widget'\n\n// After wallet connects:\nsetWalletProvider(provider)\n\n// After wallet disconnects:\nclearWalletProvider()\n```\n\n## Authentication Flow\n\nAuthentication is handled automatically by `ChatWidgetFloating`:\n\n1. User clicks \"Connect Wallet\" in the widget header\n2. Widget fires `onRequestWalletConnect` — your app triggers its wallet SDK\n3. You call `setWalletProvider(provider)` once connected\n4. Widget auto-initiates SIWE sign-in (creates message, requests signature via `personal_sign`)\n5. Widget posts the signature to the gateway's `/api/auth/login` endpoint\n6. On success, the WebSocket connects and the chat is ready\n\nNo manual token management is needed.\n\n## Integration Examples\n\n### With wagmi\n\n```svelte\n<script lang=\"ts\">\n  import { ChatWidgetFloating, setWalletProvider, clearWalletProvider } from '@albionlabs/chat-widget'\n  import { connect, disconnect, getConnectorClient, signMessage, sendTransaction, switchChain } from '@wagmi/core'\n  import { injected } from '@wagmi/connectors'\n  import { wagmiConfig } from './wagmi-config'\n\n  let provider = $state(null)\n\n  async function connectWallet() {\n    const result = await connect(wagmiConfig, { connector: injected() })\n    const client = await getConnectorClient(wagmiConfig)\n\n    provider = {\n      request: async (args) => {\n        if (args.method === 'personal_sign' && args.params) {\n          const [message] = args.params\n          return await signMessage(wagmiConfig, { message })\n        }\n        if (args.method === 'eth_sendTransaction' && args.params) {\n          const [tx] = args.params\n          const chainId = tx.chainId ? parseInt(tx.chainId, 16) : undefined\n          if (chainId) await switchChain(wagmiConfig, { chainId })\n          return await sendTransaction(wagmiConfig, {\n            to: tx.to,\n            data: tx.data,\n            value: tx.value ? BigInt(tx.value) : 0n\n          })\n        }\n        if (args.method === 'eth_accounts') {\n          return [client.account.address]\n        }\n        return client.request({ method: args.method, params: args.params })\n      }\n    }\n    setWalletProvider(provider)\n  }\n\n  function disconnectWallet() {\n    disconnect(wagmiConfig)\n    provider = null\n    clearWalletProvider()\n  }\n</script>\n\n<ChatWidgetFloating\n  config={{ gatewayUrl: 'https://your-gateway.example.com', apiKey: 'your-api-key' }}\n  callbacks={{ onRequestWalletConnect: connectWallet }}\n/>\n```\n\n> **Note:** wagmi's `sendTransaction()` handles chain switching properly, unlike using the raw viem client which may throw a `chainId` mismatch error.\n\n### With MetaMask (direct)\n\n```svelte\n<script lang=\"ts\">\n  import { ChatWidgetFloating, setWalletProvider, clearWalletProvider } from '@albionlabs/chat-widget'\n\n  async function connectWallet() {\n    if (!window.ethereum) {\n      alert('Please install MetaMask')\n      return\n    }\n    await window.ethereum.request({ method: 'eth_requestAccounts' })\n    setWalletProvider(window.ethereum)\n  }\n</script>\n\n<ChatWidgetFloating\n  config={{ gatewayUrl: 'https://your-gateway.example.com', apiKey: 'your-api-key' }}\n  callbacks={{ onRequestWalletConnect: connectWallet }}\n/>\n```\n\n## Inline Widget\n\nFor full-page layouts (no floating bubble), use `ChatWidget` directly. You must handle authentication and WebSocket connection yourself.\n\n```svelte\n<script lang=\"ts\">\n  import { ChatWidget, connect, setAuth } from '@albionlabs/chat-widget'\n\n  // You manage auth externally:\n  setAuth({ token: 'jwt-token', address: '0x...' })\n  connect({ gatewayUrl: 'wss://your-gateway.example.com', token: 'jwt-token' })\n</script>\n\n<div style=\"height: 600px;\">\n  <ChatWidget config={{ gatewayUrl: 'wss://your-gateway.example.com', token: 'jwt-token', name: 'my-bot' }} />\n</div>\n```\n\n## Transaction Signing\n\nWhen the AI agent deploys a strategy, the widget handles the full signing flow:\n\n1. Agent stages transactions via the gateway\n2. Widget displays a signing prompt with transaction details and simulation results\n3. User reviews and confirms\n4. Widget sends each transaction through the wallet provider via `eth_sendTransaction`\n5. Widget reports transaction hashes back to the gateway\n6. On completion, the Raindex order link is sent to the chat\n\nNo additional code is needed — transaction signing works automatically as long as a wallet provider is set.\n\n## Theming\n\nThe widget supports light and dark color themes via the `theme` config property.\n\n```svelte\n<!-- Dark theme (default) -->\n<ChatWidgetFloating config={{ gatewayUrl, apiKey, theme: 'dark' }} />\n\n<!-- Light theme -->\n<ChatWidgetFloating config={{ gatewayUrl, apiKey, theme: 'light' }} />\n```\n\nIn **dark** mode the floating bubble has a dark background with the white Albion marque. In **light** mode the bubble has a white background with the navy Albion marque. The header stays dark in both themes for brand consistency; the chat body, input, bubbles, modals, and status indicators all adapt.\n\nThe inline `ChatWidget` also accepts `theme`:\n\n```svelte\n<ChatWidget config={{ gatewayUrl, token, theme: 'light' }} />\n```\n\n## Styling\n\nThe widget uses its own scoped styles and renders at `z-index: 9999`. If you have elements that need to appear above the widget, use a higher z-index. The widget's internal modals (e.g., Rainlang review) render at `z-index: 10001`.\n\n## API Reference\n\n### Components\n\n| Component | Description |\n|-----------|-------------|\n| `ChatWidgetFloating` | Floating bubble + chat panel with built-in auth. **Recommended.** |\n| `ChatWidget` | Inline chat interface. Requires manual auth/connection setup. |\n| `WalletStatusIndicator` | Wallet connection status dot + address display. |\n\n### Store Functions\n\n| Function | Description |\n|----------|-------------|\n| `setWalletProvider(provider)` | Register an EIP-1193 wallet provider. |\n| `clearWalletProvider()` | Unregister the wallet provider. |\n| `connect(config)` | Manually connect the WebSocket (inline widget only). |\n| `disconnect()` | Close the WebSocket connection. |\n| `sendMessage(text)` | Send a chat message programmatically. |\n| `setAuth({ token, address })` | Set auth state manually (inline widget only). |\n| `clearAuth()` | Clear auth state. |\n\n### Stores (Readable)\n\n| Store | Type | Description |\n|-------|------|-------------|\n| `chat` | `{ messages, status, error }` | Current chat state. |\n| `auth` | `{ token, address }` | Current auth state. |\n","readmeFilename":"README.md"}