{"_id":"@agentcrafta/chat-next","_rev":"13-3dad90121d37f3305d6ab3fcde0f2682","name":"@agentcrafta/chat-next","dist-tags":{"latest":"0.0.13"},"versions":{"0.0.1":{"name":"@agentcrafta/chat-next","version":"0.0.1","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.1","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"82bf1f8485264132e6f5a85ad84799169f86c0b1","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.1.tgz","fileCount":9,"integrity":"sha512-Ue5afh1bOJ+bExRHf4N1sd1JI08gpgXSc0tAQQg/HAUz63dzT58+WG1J6x+sDXohgQihA9CdKNi/hOQL0lReEw==","signatures":[{"sig":"MEQCIC4tEU8iS7j5TUtZZgJRbOojiEggwLNyw6fS0xsUGhC3AiBcnhVW0mt+1r5ntIEWUccnqelRTj/SwDtS7jnVqhjOpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50891},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"14bc0e09b19cc22ae4164a75f803d511c1946e9d","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.1_1770909816206_0.22590022331149284","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@agentcrafta/chat-next","version":"0.0.2","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.2","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"601c680b9df04eddae4d7120dfb7b86f256c9d40","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.2.tgz","fileCount":9,"integrity":"sha512-yJ2xcqNtvqDJSTwplqX76R3A1HT0KWeazgIPDFsHq0vMr5vTnJr4w3SUoR7iw84J/xwwjKeY5QuPzZEdTjIyhA==","signatures":[{"sig":"MEYCIQDu1KM2dTvUE1NYYOyPX0gRBtgRlL8Lp69/lfIdCAantwIhAJ3cRo5M1lY8qhtl60Pbg/HiQPCCIKpoClxROzbulLgG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50891},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"8b84551f9166587181a5537c5a41f23cd3eed9e2","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.2_1770927015317_0.3167120122660818","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@agentcrafta/chat-next","version":"0.0.3","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.3","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"443b6a0ac275889aa5099dce276b85eaac0c6132","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.3.tgz","fileCount":11,"integrity":"sha512-AIYwMeermBq8CY7hBxHEG0c2WG3ON9BhtgX4H3mUbvyyDixQtvP37FVk8e3m1tIMUyjY4Kb2cbrI6AxE03zghA==","signatures":[{"sig":"MEQCH3e2j8Yakt6KGT6ziHUfF7ID56fpkC2BYri4XRgZIU4CIQCa3o5OBDoeGzLB6yftGEb/qcsiox9o4Z5LiBxrO3Z7sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60928},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"c813b61bd1865a8003b14cd2f98270151fd1cb30","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.3_1770930826994_0.32890272498400663","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@agentcrafta/chat-next","version":"0.0.4","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.4","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"b277b13304216be357f81fcc72186fcad5ab6d4f","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.4.tgz","fileCount":10,"integrity":"sha512-xUvYsxuijlXw+9UCWsjjEVsqTThejkXYLsYmlZ6fSOlacip/Dv6QUE8ySfwUm8PiaSEhnxKPk3SC6PmUfuI0OQ==","signatures":[{"sig":"MEYCIQDA6rXOCNQLLYhTgs1zqAgYg+OvQZbZCLHwL4WjDxyHBQIhAOfhI1l86PT/XbfxOAwysM0b+LblWes85wgyKhyQ2L1X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54975},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"e3528862a62a8c045c5ba68d00bdfb4baf3108a9","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.4_1770988929553_0.24097864634612143","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@agentcrafta/chat-next","version":"0.0.5","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.5","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"59a563cac39efcbcc51d6e317eaa0148e0a78a8d","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.5.tgz","fileCount":10,"integrity":"sha512-+OGDoSDMTgUsqah3/8JgLYKtU/pqLQP1JrMZe1Xq8BX3tjS6Zq6tPxCJqiR3XyZdZ2t/EzrW8k0yM50iDWpPbA==","signatures":[{"sig":"MEUCIDcs2jrY61UgNRmkK7jbZJLhyr8MY5DnexRFumwm/lpEAiEAnQOd5VocWXPxSAu4c5FPkLrd+ClRYW/CYP/e4tL86Hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54711},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"d2b95eecc78b398578f990848fa8184d845c05c4","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.5_1770991387998_0.3097235496215738","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@agentcrafta/chat-next","version":"0.0.6","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.6","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"19cf9d26a220644e47b1aa70220e214ef94ed068","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.6.tgz","fileCount":10,"integrity":"sha512-VB1R4SjAxb4c1snfz+SgPvjpw2ntFwSjcU9MPWoMNtgLwT+gd5ckoKSeLhogOCxn+NJznHOxVbK3DMHUqZCeFQ==","signatures":[{"sig":"MEQCIDZRQu5ClnU93SQWyHKnbLeCCnNI/KP86+caM7rCU5E2AiBFEA74lQciTtoGuhcNLzFAHgippSLTyMzFJcN3TSc8ZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56792},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"47e15ec35817d34a7742fb2b6beacb6c35d83570","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.6_1770994132884_0.5008799018357513","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@agentcrafta/chat-next","version":"0.0.7","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.7","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"f02e6d9beb993ec07ee6a6b0675e1ab943f1fa47","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.7.tgz","fileCount":10,"integrity":"sha512-1pzeFt/+/+Yn6uQSChjV9J8RTa4K/WTSsNIxZG4s7W0ppDCz9Wvp4bStcD3jTpch6UITUT7zZbF+df42paH6fQ==","signatures":[{"sig":"MEUCIQCJkTk1bz8PhGsFSxoLMEAtRh/hArExkhRR7odqNFm06gIgW0nsv5D13c5uYi62uWOYKF98wiwDWGSwq8Pz1wt/MSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59435},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"}},"gitHead":"22e11cf44ae3f3b24b8f92ed71e8230e81cb6316","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.7_1770995538436_0.32347133560540553","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@agentcrafta/chat-next","version":"0.0.8","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.8","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"6a5737cd513e55ea24dd8887246c1ab2a8918f74","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.8.tgz","fileCount":11,"integrity":"sha512-Wn3coUEnoKwwPRKlKOz34vKPVcZjVxvPp4S2po4TkfugOrgoTY2jPC+4T339+qpbswwnMrBwKrtfDsj4UE3uHQ==","signatures":[{"sig":"MEUCIH2uBDzkiWPHwchfu4VJXNLSqECPgo6YtnUxfZO8vsJvAiEA4YuRbFvbkZ8ivL+NbjlCuNDd4klVYqEyH8pvZhwvkPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62096},"type":"module","style":"dist/chat.style.css","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./styles.css":"./dist/chat.style.css"},"gitHead":"881e41aa0259d966dd911225413181eff2d745e1","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup && cpy src/client/chat.style.css dist/ --flat","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.8_1771007912696_0.8638691619324175","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@agentcrafta/chat-next","version":"0.0.9","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.9","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"6f7a2dbb4206216bd70c8c2e66082150442fa6d5","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.9.tgz","fileCount":11,"integrity":"sha512-7ZK1H7PJhf3Osnn4Dk8errH4ucBaq9hjgtu2SP0EblHujfaSSXZpvmACUg7B07o5N8SVEd8afsevq1jM1yz1yQ==","signatures":[{"sig":"MEQCIGWDVvCTLzLa1Ji1MtAAdilFbJLbcyDqa0lrAEpyPI3sAiAd+FO7WXUG3NMr2v4cLgCi+nm17sR3OdGg4tHcRFvJoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61578},"type":"module","style":"dist/chat.style.css","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./styles.css":"./dist/chat.style.css"},"gitHead":"881e41aa0259d966dd911225413181eff2d745e1","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup && cpy src/client/chat.style.css dist/ --flat","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.9_1771009492553_0.8016604913638996","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@agentcrafta/chat-next","version":"0.0.10","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.10","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"64ed579f6ad67ba940692e08840a244e638bd0ee","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.10.tgz","fileCount":11,"integrity":"sha512-eujkZexG+4Es6KKji4P7q18iQueFKxbc4GOkq7Pa54dTL27/Z8iiNjmxud1rL4goE/2HqKEHj+2yFl2E6+k/XA==","signatures":[{"sig":"MEQCICnXEh4JO7RrJgzQ9a1qsW6QnTpdej0uIij64QTeITCBAiASv5sP+UIQNBdd5C49WZvSOjQq805VUDhswNFrwY/MCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62022},"type":"module","style":"dist/chat.style.css","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./styles.css":"./dist/chat.style.css"},"gitHead":"7bd726661c2b577d98f9e345ef16183f5c298e97","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup && cpy src/client/chat.style.css dist/ --flat","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.10_1771011512361_0.9163356438239887","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@agentcrafta/chat-next","version":"0.0.11","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.11","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"3efed79d99d29cdfe8d129699b03412b17ca2285","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.11.tgz","fileCount":11,"integrity":"sha512-cyxe8w6L7QgV+vIE+HtMZ4YPKXkPyA4Vm+xHCrk5DO3aCiEjsf1ThQb78XMMR073yDNi3wZydTsxm37zTEpE5w==","signatures":[{"sig":"MEUCIDgKPvOLWHE8cicrj3wlO/CpuCvmn6KhEReNvpASlzHsAiEA/tho6neTN9o6V7H+G48xYkM9acnZKOVxHph6KYXm8SY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66502},"type":"module","style":"dist/chat.style.css","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./styles.css":"./dist/chat.style.css"},"gitHead":"7bd726661c2b577d98f9e345ef16183f5c298e97","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup && cpy src/client/chat.style.css dist/ --flat","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.11_1771012459969_0.04220240189407232","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@agentcrafta/chat-next","version":"0.0.12","author":{"name":"Lazaro Blanco"},"license":"MIT","_id":"@agentcrafta/chat-next@0.0.12","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"dist":{"shasum":"4ac098f3b9f33b4946e0589f1659a1b48a0b4383","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.12.tgz","fileCount":11,"integrity":"sha512-FGSFWLoxEG+iBPTht/fZWSRoCPyBS8TDw+2WFLtBnCaiB4Wp+5f461xmHlNBRvf1da6QdEhTAWMyrcn/213bAA==","signatures":[{"sig":"MEUCIQCtkVXmCm8kg6xk+1s0DydPu4pu1y4pludRuS723wd8KwIgf8JdN3itVY1Qffh9UgbsIpyNaQANGhyXg1snlNk1oYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67031},"type":"module","style":"dist/chat.style.css","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./styles.css":"./dist/chat.style.css"},"gitHead":"0cd506d6f598936841980de0e908e35350c83d5e","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup && cpy src/client/chat.style.css dist/ --flat","test:run":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"_npmVersion":"10.9.0","description":"Customizable chat agent","directories":{},"sideEffects":["*.css"],"_nodeVersion":"22.11.0","dependencies":{"@agentcrafta/core":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"add":"^2.0.6","tsup":"^8.5.1","jsdom":"^27.0.1","vitest":"^4.0.18","happy-dom":"^20.6.1","typescript":"^5.9.3","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/chat-next_0.0.12_1771014463058_0.07402186016467582","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@agentcrafta/chat-next","version":"0.0.13","type":"module","style":"dist/chat.style.css","sideEffects":["*.css"],"description":"Customizable chat agent","author":{"name":"Lazaro Blanco"},"license":"MIT","scripts":{"build":"tsup && cpy src/client/chat.style.css dist/ --flat","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest","test:run":"vitest run"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./styles.css":"./dist/chat.style.css"},"peerDependencies":{"next":">=14","react":">=18","react-dom":">=18"},"devDependencies":{"@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/node":"^25.2.2","@types/react":"^19.2.13","@types/react-dom":"^19.2.3","add":"^2.0.6","happy-dom":"^20.6.1","jsdom":"^27.0.1","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.0.18","cpy-cli":"^5.0.0"},"dependencies":{"@agentcrafta/core":"^0.0.1"},"_id":"@agentcrafta/chat-next@0.0.13","gitHead":"84dc70fb0a999d4e0be381ce86b073a58c21bd60","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-AtSXAixvKNFPJtIegLd2x9gJkGgjqU2jqOPVVuML7mb5OZ77vphxGLKHQtZaDSG1p5qFbGguinuPyGRFiUYQcQ==","shasum":"b5cb47e407e6c0b09eb53bc205895c6cfcef769f","tarball":"https://registry.npmjs.org/@agentcrafta/chat-next/-/chat-next-0.0.13.tgz","fileCount":11,"unpackedSize":68749,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICiCtQPg4RgOJasQseF7HeCckzx4VIUc0/iAaTB0T/5oAiEA/kHEpDbUDZ81hJicLVEYbI3lcRWo0cmDSIcMsrE7G+4="}]},"_npmUser":{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"},"directories":{},"maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chat-next_0.0.13_1771725416162_0.08893737510773447"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-12T15:23:36.107Z","modified":"2026-02-22T01:56:56.481Z","0.0.1":"2026-02-12T15:23:36.441Z","0.0.2":"2026-02-12T20:10:15.476Z","0.0.3":"2026-02-12T21:13:47.134Z","0.0.4":"2026-02-13T13:22:09.695Z","0.0.5":"2026-02-13T14:03:08.129Z","0.0.6":"2026-02-13T14:48:53.023Z","0.0.7":"2026-02-13T15:12:18.573Z","0.0.8":"2026-02-13T18:38:32.839Z","0.0.9":"2026-02-13T19:04:52.740Z","0.0.10":"2026-02-13T19:38:32.500Z","0.0.11":"2026-02-13T19:54:20.127Z","0.0.12":"2026-02-13T20:27:43.217Z","0.0.13":"2026-02-22T01:56:56.320Z"},"author":{"name":"Lazaro Blanco"},"license":"MIT","description":"Customizable chat agent","maintainers":[{"name":"lazaroblanco","email":"lazarogadiel93@gmail.com"}],"readme":"# Agente Conversacional Embebido\r\n\r\n## Descripción del Componente\r\n\r\nEl **Agente Conversacional Embebido** es un componente React que integra Microsoft Bot Framework Web Chat en una interfaz moderna y personalizable. Proporciona una experiencia de chat completa con soporte para reinicio de conversación, personalización de estilos dinámicos basados en variables CSS, y gestión automática del estado de conexión.\r\n\r\nEste componente utiliza el Web Chat de Bot Framework para comunicarse con Power Virtual Agents (PVA) u otros bots compatibles, ofreciendo una interfaz de usuario intuitiva y responsive.\r\n\r\n## Índice\r\n\r\n- [Instalación y Configuración](#instalación-y-configuración)\r\n- [Variables de Entorno](#variables-de-entorno)\r\n- [Uso del Componente](#uso-del-componente)\r\n- [Server Actions](#server-actions)\r\n- [Hook useChat](#hook-usechat)\r\n- [Configuración de StyleOptions](#configuración-de-styleoptions)\r\n- [Tipos y Interfaces](#tipos-y-interfaces)\r\n- [Styles](#styles)\r\n- [Limitaciones y Consideraciones](#limitaciones-y-consideraciones)\r\n\r\n## Instalación y Configuración\r\n\r\n### Variables de Entorno\r\n\r\nConfigure las siguientes variables en su archivo `.env.local` para desarrollo local:\r\n\r\n```env\r\n# URL del endpoint para obtener tokens del agente conversacional\r\n\r\nTOKEN_AGENTE_URL=https://your-bot-endpoint.com/powervirtualagents/botsbyschema/...\r\n# o\r\nNEXT_PUBLIC_TOKEN_AGENTE_URL=https://your-bot-endpoint.com/powervirtualagents/botsbyschema/...\r\n```\r\n\r\nPara **PRODUCCIÓN**, asegúrese de establecer esta variable en su entorno de despliegue.\r\n\r\n**Importante**: La variable debe apuntar al endpoint completo de Power Virtual Agents que incluye el esquema del bot y la API version.\r\n\r\n## Uso del Componente\r\n\r\n### Características\r\n\r\n- **Chat flotante**: Aparece como un botón flotante en la esquina inferior derecha\r\n- **Interfaz responsive**: Se adapta a diferentes tamaños de pantalla\r\n- **Reinicio de conversación**: Botón para reiniciar la conversación completa\r\n- **Personalización de estilos**: Utiliza variables CSS para temas dinámicos\r\n- **Gestión de errores**: Manejo robusto de errores tanto en cliente como en servidor\r\n\r\n### Props del Componente\r\n\r\n| Prop           | Tipo                                                           | Default          | Descripción                                                      |\r\n| -------------- | -------------------------------------------------------------- | ---------------- | ---------------------------------------------------------------- |\r\n| `botName`      | `string`                                                       | `\"Agent\"`        | Nombre que se mostrará en la cabecera del chat                   |\r\n| `logoUrl`      | `string`                                                       | `undefined`      | URL del logo que se mostrará junto al nombre del bot (opcional)  |\r\n| `show`         | `boolean`                                                      | `true`           | Indica si el chat debe mostrarse o no (por defecto es true)      |\r\n| `styleOptions` | `StyleOptions`                                                 | `undefined`      | Opciones de estilo personalizadas para el chat (opcional)        |\r\n| `entryPoint`   | `string`                                                       | `undefined`      | Punto de entrada para la conversación (opcional)                 |\r\n| `position`     | `\"bottom-right\" \\| \"bottom-left\" \\| \"top-right\" \\| \"top-left\"` | `\"bottom-right\"` | Posición del chat en la pantalla (por defecto es \"bottom-right\") |\r\n| `chatButton`   | `(props: ChatButtonProps) => React.ReactNode`                  | `undefined`      | Elemento de botón personalizado para abrir el chat (opcional)    |\r\n\r\n### Importación y Uso\r\n\r\nImportante: Componente de tipo Client Component, debe ser utilizado dentro de un componente con `'use client'` en Next.js.\r\n\r\nEn el archivo **layout** o en la página donde desea mostrar el chat, importe los estilos del componente\r\n\r\n```tsx\r\nimport \"@agentcrafta/chat-next/styles.css\";\r\n```\r\n\r\n#### Básico\r\n\r\n```tsx\r\nimport { Chat } from \"@agentcrafta/chat-next\";\r\n\r\nexport default function HomePage() {\r\n  return (\r\n    <div>\r\n      <h1>Mi Aplicación</h1>\r\n      <Chat\r\n        entryPoint={process.env.NEXT_PUBLIC_TOKEN_AGENTE_URL || \"\"}\r\n        botName=\"Asistente Virtual\"\r\n      />\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n#### Avanzado con Personalización de Estilos\r\n\r\n```tsx\r\n\"use client\";\r\nimport { Chat } from \"@agentcrafta/chat-next\";\r\n\r\nexport default function HomePage() {\r\n  return (\r\n    <div>\r\n      <h1>Mi Aplicación</h1>\r\n      <Chat\r\n        botName=\"Asistente Virtual\"\r\n        logoUrl=\"/logo.svg\"\r\n        entryPoint={process.env.NEXT_PUBLIC_TOKEN_AGENTE_URL || \"\"}\r\n        styleOptions={{\r\n          backgroundColor: \"#7e0f0f\",\r\n        }}\r\n        chatButton={({ isVisible, toggle }) => (\r\n          <button onClick={toggle}>{isVisible ? \"Cerrar\" : \"Abrir\"}</button>\r\n        )}\r\n      />\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n## Server Actions\r\n\r\nDe manera informativa, no se expone directamente la API de Server Actions, pero el componente las utiliza internamente para obtener tokens, configuración y registrar errores. A continuación se describen las funciones disponibles:\r\n\r\n### `getRegionalSettings(tokenEndpoint?: string)`\r\n\r\n**Propósito**: Obtiene la configuración regional del bot, incluyendo las URLs de los canales disponibles.\r\n\r\n```typescript\r\nconst data = await getRegionalSettings(tokenEndpoint?: string);\r\nconsole.log(data.channelUrlsById.directline); // URL de DirectLine\r\n```\r\n\r\n**Retorna**: Configuración regional con URLs de canales disponibles.\r\n\r\n### `getConversationToken(tokenEndpoint?: string)`\r\n\r\n**Propósito**: Obtiene el token de autenticación necesario para establecer la conexión con DirectLine.\r\n\r\n```typescript\r\nconst token = await getConversationToken(tokenEndpoint?: string);\r\n```\r\n\r\n**Retorna**: Token de conversación válido para DirectLine.\r\n\r\n### `getChatStoreConfig()`\r\n\r\n**Propósito**: Obtiene la configuración del store de Web Chat, incluyendo eventos iniciales y filtros.\r\n\r\n```typescript\r\nconst config = await getChatStoreConfig();\r\n// config.eventConfig.startConversation - Evento para iniciar conversación\r\n// config.filterConfig - Configuración de filtros\r\n```\r\n\r\n**Retorna**: Configuración del store con estado inicial y eventos.\r\n\r\n### `logChatError(input)`\r\n\r\n**Propósito**: Registra errores del chat en el servidor para monitoreo y debugging.\r\n\r\n```typescript\r\nawait logChatError({\r\n  errorType: \"connection_failed\",\r\n  errorMessage: \"No se pudo conectar al bot\",\r\n  actionType: \"initialize_chat\",\r\n  userId: \"optional-user-id\",\r\n});\r\n```\r\n\r\n**Parámetros**:\r\n\r\n- `errorType`: Tipo de error (string)\r\n- `errorMessage`: Mensaje descriptivo del error\r\n- `actionType`: Acción que causó el error (opcional)\r\n- `userId`: ID del usuario (opcional)\r\n\r\n## Hook useChat\r\n\r\n### Funciones y Estado\r\n\r\n#### Estado del Chat\r\n\r\n### Props del Hook\r\n\r\n| Prop                | Tipo           | Default       | Descripción                                               |\r\n| ------------------- | -------------- | ------------- | --------------------------------------------------------- |\r\n| `styleOptionsProps` | `StyleOptions` | `undefined`   | Opciones de estilo personalizadas para el chat (opcional) |\r\n| `entryPoint`        | `string`       | **Requerido** | Punto de entrada para la conversación                     |\r\n\r\n```typescript\r\nconst {\r\n  isVisible, // boolean - Chat visible/oculto\r\n  isRestarting, // boolean - Estado de reinicio\r\n  chatKey, // number - Key para forzar re-render\r\n  webChatRef, // RefObject - Referencia al DOM del chat\r\n  styleOptionsMerged, // StyleOptions - Configuración de estilos\r\n  // ... funciones\r\n} = useChat();\r\n```\r\n\r\n#### Funciones Principales\r\n\r\n##### `handleChangeVisibility(visible: boolean)`\r\n\r\nControla la visibilidad del chat.\r\n\r\n```typescript\r\nhandleChangeVisibility(true); // Mostrar chat\r\nhandleChangeVisibility(false); // Ocultar chat\r\n```\r\n\r\n##### `initializeChat()`\r\n\r\nInicializa el chat embebido obteniendo tokens y configuración.\r\n\r\n- Obtiene configuración regional\r\n- Solicita token de conversación\r\n- Crea la instancia de DirectLine\r\n- Renderiza Web Chat con estilos personalizados\r\n\r\n##### `restartConversation()`\r\n\r\nReinicia completamente la conversación utilizando el patrón React key.\r\n\r\n- Limpia referencias actuales\r\n- Regenera el chatKey para forzar remount\r\n- Reinicializa la conexión\r\n\r\n##### `cleanup()`\r\n\r\nLimpia la instancia del chat de forma segura.\r\n\r\n## Configuración de StyleOptions\r\n\r\n### Opciones de Color y Tema\r\n\r\n```typescript\r\ninterface StyleOptions {\r\n  // Colores principales\r\n  accent: string; // Color principal (#0078D4)\r\n  backgroundColor: string; // Fondo del chat (#e8e9eb)\r\n\r\n  // Configuración de burbujas del bot\r\n  bubbleBackground: string; // Fondo de mensajes del bot\r\n  bubbleBorderRadius: number; // Radio de borde de burbujas\r\n  bubbleTextColor: string; // Color del texto del bot\r\n\r\n  // Configuración de burbujas del usuario\r\n  bubbleFromUserBackground: string; // Fondo de mensajes del usuario\r\n  bubbleFromUserBorderRadius: number; // Radio de borde del usuario\r\n  bubbleFromUserTextColor: string; // Color del texto del usuario\r\n\r\n  // Configuración de avatares\r\n  botAvatarImage: string; // URL del avatar del bot\r\n  botAvatarInitials: string; // Iniciales del bot\r\n  userAvatarImage: string; // URL del avatar del usuario\r\n  userAvatarInitials: string; // Iniciales del usuario\r\n  userAvatarBackgroundColor: string; // Color de fondo del avatar\r\n\r\n  // Caja de entrada\r\n  sendBoxBackground: string; // Fondo de la caja de texto\r\n  sendBoxBorderTop: string; // Borde superior de la caja\r\n  sendBoxButtonColor: string; // Color del botón de enviar\r\n  sendBoxHeight: number; // Altura de la caja (50px)\r\n\r\n  // Animaciones\r\n  typingAnimationBackgroundImage: string; // GIF de animación de escritura\r\n  typingAnimationDuration: number; // Duración de la animación (ms)\r\n  typingAnimationHeight: number; // Altura de la animación\r\n  typingAnimationWidth: number; // Ancho de la animación\r\n}\r\n```\r\n\r\n### Categorías de Configuración\r\n\r\n#### **Diseño y Layout**\r\n\r\n- `avatarSize`: Tamaño de avatares (31px)\r\n- `bubbleMessageMaxWidth`: Ancho máximo de burbujas (480px)\r\n- `paddingRegular`: Padding estándar (10px)\r\n\r\n#### **Tipografía**\r\n\r\n- `primaryFont`: Fuente principal del chat\r\n- `monospaceFont`: Fuente para código (Consolas)\r\n- `fontSizeSmall`: Tamaño de fuente pequeña (70%)\r\n\r\n#### **Interactividad**\r\n\r\n- `suggestedActionBackgroundColor`: Color de acciones sugeridas\r\n- `suggestedActionLayout`: Layout de acciones ('flow', 'stacked', 'carousel')\r\n- `hideUploadButton`: Ocultar botón de subir archivos\r\n\r\n#### **Animaciones y Feedback**\r\n\r\n- `spinnerAnimationHeight/Width`: Dimensiones del spinner (16px)\r\n- `autoScrollSnapOnPage`: Auto-scroll en nuevos mensajes\r\n\r\n## Tipos e Interfaces\r\n\r\n### `StyleOptions`\r\n\r\nInterface completa para la configuración de estilos del Web Chat.\r\n\r\n### `WebChatAction`\r\n\r\nDefine las acciones disponibles para el store de Web Chat:\r\n\r\n- `DIRECT_LINE/CONNECT_FULFILLED`: Conexión establecida\r\n- `DIRECT_LINE/POST_ACTIVITY`: Enviar actividad/mensaje\r\n- `DIRECT_LINE/INCOMING_ACTIVITY`: Recibir actividad/mensaje\r\n\r\n### `WebChatStore`\r\n\r\nInterface para el store personalizado con middleware para manejo de eventos y filtros.\r\n\r\n### `WebChatLib`\r\n\r\nInterface para la biblioteca global de Web Chat con métodos de creación y renderizado.\r\n\r\n---\r\n\r\n## Styles\r\n\r\nEl componente usa su propio css interno.\r\n\r\n```css\r\n/* Estilos base para AgentCrafta Chat */\r\n.agentcrafta-chat-container {\r\n  position: fixed;\r\n  z-index: 999;\r\n  display: flex;\r\n  align-items: flex-end;\r\n  gap: 1rem;\r\n}\r\n\r\n/* Bottom Right: Chat a la izquierda, botón a la derecha */\r\n.agentcrafta-chat-container.bottom-right {\r\n  bottom: 2rem;\r\n  right: 2rem;\r\n  flex-direction: row;\r\n}\r\n\r\n/* Bottom Left: Botón a la izquierda, chat a la derecha */\r\n.agentcrafta-chat-container.bottom-left {\r\n  bottom: 2rem;\r\n  left: 2rem;\r\n  flex-direction: row-reverse;\r\n}\r\n\r\n/* Top Right: Chat a la izquierda, botón a la derecha */\r\n.agentcrafta-chat-container.top-right {\r\n  top: 2rem;\r\n  right: 2rem;\r\n  flex-direction: row;\r\n  align-items: flex-start;\r\n}\r\n\r\n/* Top Left: Botón a la izquierda, chat a la derecha */\r\n.agentcrafta-chat-container.top-left {\r\n  top: 2rem;\r\n  left: 2rem;\r\n  flex-direction: row-reverse;\r\n  align-items: flex-start;\r\n}\r\n\r\n.agentcrafta-chat-window {\r\n  height: 520px;\r\n  width: 450px;\r\n  overflow: hidden;\r\n  border-radius: 1rem;\r\n  background-color: white;\r\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\r\n  transition: all 0.3s ease-in-out;\r\n}\r\n\r\n.agentcrafta-chat-window.bottom-right,\r\n.agentcrafta-chat-window.bottom-left {\r\n  transform-origin: bottom;\r\n}\r\n\r\n.agentcrafta-chat-window.top-right,\r\n.agentcrafta-chat-window.top-left {\r\n  transform-origin: top;\r\n}\r\n\r\n.agentcrafta-chat-window.visible {\r\n  transform: scale(1);\r\n  opacity: 1;\r\n}\r\n\r\n.agentcrafta-chat-window.hidden {\r\n  transform: scale(0.95);\r\n  opacity: 0;\r\n  pointer-events: none;\r\n}\r\n\r\n.agentcrafta-chat-header {\r\n  display: flex;\r\n  height: 3.5rem;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  padding: 0 1.25rem;\r\n  background-color: var(--primary-color, #0066cc);\r\n  color: white;\r\n}\r\n\r\n.agentcrafta-chat-header-content {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 0.75rem;\r\n  font-size: 1rem;\r\n  font-weight: 500;\r\n}\r\n\r\n.agentcrafta-chat-logo {\r\n  height: 1.75rem;\r\n  width: 1.75rem;\r\n  border-radius: 0.25rem;\r\n}\r\n\r\n.agentcrafta-chat-actions {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 0.75rem;\r\n}\r\n\r\n.agentcrafta-chat-button {\r\n  border-radius: 0.5rem;\r\n  padding: 0.5rem;\r\n  transition: background-color 0.2s;\r\n  border: none;\r\n  background: transparent;\r\n  cursor: pointer;\r\n  color: inherit;\r\n}\r\n\r\n.agentcrafta-chat-button:hover {\r\n  background-color: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.agentcrafta-chat-button:disabled {\r\n  cursor: not-allowed;\r\n  opacity: 0.5;\r\n}\r\n\r\n.agentcrafta-chat-content {\r\n  position: relative;\r\n  height: calc(100% - 56px);\r\n  width: 100%;\r\n  background-color: #f9fafb;\r\n}\r\n\r\n.agentcrafta-chat-loading {\r\n  position: absolute;\r\n  inset: 0;\r\n  z-index: 10;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  background-color: rgba(249, 250, 251, 0.8);\r\n}\r\n\r\n.agentcrafta-chat-loading-content {\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  gap: 0.75rem;\r\n  color: #4b5563;\r\n}\r\n\r\n.agentcrafta-chat-loading-spinner {\r\n  height: 2rem;\r\n  width: 2rem;\r\n  animation: spin 1s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n  from {\r\n    transform: rotate(0deg);\r\n  }\r\n  to {\r\n    transform: rotate(360deg);\r\n  }\r\n}\r\n\r\n.agentcrafta-chat-loading-text {\r\n  font-size: 0.875rem;\r\n  font-weight: 500;\r\n}\r\n\r\n/* Estilos para el botón flotante */\r\n.agentcrafta-chat-fab {\r\n  height: 3.5rem;\r\n  width: 3.5rem;\r\n  border-radius: 9999px;\r\n  background-color: var(--primary-color, #0066cc);\r\n  color: white;\r\n  border: none;\r\n  cursor: pointer;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  box-shadow:\r\n    0 10px 15px -3px rgba(0, 0, 0, 0.1),\r\n    0 4px 6px -2px rgba(0, 0, 0, 0.05);\r\n  transition: all 0.2s;\r\n}\r\n\r\n.agentcrafta-chat-fab:hover {\r\n  transform: scale(1.1);\r\n  box-shadow:\r\n    0 20px 25px -5px rgba(0, 0, 0, 0.1),\r\n    0 10px 10px -5px rgba(0, 0, 0, 0.04);\r\n}\r\n\r\n.agentcrafta-chat-fab:active {\r\n  transform: scale(1.05);\r\n}\r\n```\r\n\r\n---\r\n\r\n## Limitaciones y Consideraciones\r\n\r\n- **Compatibilidad de Bots**: Solo funciona con bots que implementan Microsoft Bot Framework y DirectLine. No es compatible con bots de otros frameworks (e.g., Dialogflow puro, Rasa sin adaptador) a menos que se integre vía middleware personalizado. Bots no basados en Azure Bot Service o Power Virtual Agents pueden requerir ajustes adicionales.\r\n- **Requisitos Técnicos**:\r\n  - Requiere Next.js con componentes Client ('use client').\r\n  - No soporta entornos sin JavaScript (e.g., bots puramente server-side).\r\n  - Rendimiento limitado en conexiones lentas; el chat puede fallar si el token expira (vida típica: 30 minutos).\r\n  - Responsive solo en navegadores modernos; no optimizado para accesibilidad avanzada (e.g., lectores de pantalla pueden necesitar ajustes).\r\n\r\n- **Seguridad y Privacidad**:\r\n  - Los tokens de conversación son temporales, pero evita exponerlos en código público. El logging de errores registra datos sensibles (e.g., userId); asegúrate de cumplir con GDPR/CCPA.\r\n  - No incluye cifrado end-to-end; usa HTTPS obligatorio.\r\n  - Limitado a un chat por instancia; múltiples chats simultáneos no están soportados.\r\n\r\n- **Mejores Prácticas**:\r\n  - Prueba en entornos de desarrollo antes de producción.\r\n  - Monitorea errores vía Server Actions; no garantiza recuperación automática de fallos críticos.\r\n  - Para bots personalizados, valida el endpoint manualmente para compatibilidad con DirectLine.\r\n\r\nSi encuentras limitaciones no cubiertas, consulta la documentación de [Bot Framework](https://docs.microsoft.com/en-us/azure/bot-service/).\r\n\r\n## Notas de Implementación\r\n\r\n1. **Seguridad**: El componente incluye validación de tokens y manejo de errores robusto\r\n2. **Performance**: Utiliza el patrón React key para reinicializaciones eficientes\r\n3. **Accesibilidad**: Incluye labels ARIA y soporte para navegación por teclado\r\n4. **Responsive**: Diseño adaptable para diferentes dispositivos\r\n\r\n## Troubleshooting\r\n\r\n### Problemas Comunes\r\n\r\n1. **Chat no se inicializa**: Verificar `TOKEN_AGENTE_URL` en `.env`\r\n2. **Estilos no se aplican**: Verificar variables CSS disponibles e importacion de estilos\r\n3. **Errores de conexión**: Revisar configuración de CORS y headers de seguridad\r\n4. **Imágenes no cargan**: Verificar rutas en carpeta `public/`\r\n","readmeFilename":"README.md"}