{"_id":"@adatechnology/web-chat-widget","_rev":"7-3322214d31c618f17b47bdacb42718a9","name":"@adatechnology/web-chat-widget","dist-tags":{"rc":"0.1.0-rc.4","latest":"0.1.0"},"versions":{"0.1.0-rc.0":{"name":"@adatechnology/web-chat-widget","version":"0.1.0-rc.0","_id":"@adatechnology/web-chat-widget@0.1.0-rc.0","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"ffb5068e29b08fbb2ddacb21692703ca35325ca1","tarball":"https://registry.npmjs.org/@adatechnology/web-chat-widget/-/web-chat-widget-0.1.0-rc.0.tgz","fileCount":4,"integrity":"sha512-pNnZ9MNyTm5E+6bQPDFLtZnb8Cf8HKA/g5CELfSicNSSf6ERU5VGbzexXbDQ5SO6wm9uGc2uWk3ylr+1DoHyIw==","signatures":[{"sig":"MEQCIEo4cM7REVzZ7EfU9PRxdhP4ItZ+qA9iv9ctQXrsgiWzAiAxPVRYOuGNS/O3Z0bpJ2RRM0ZLjHuqLDXMxUCV1m0TVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43041},"main":"dist/index.js","type":"module","_from":"file:adatechnology-web-chat-widget-0.1.0-rc.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"bun test","build":"tsup src/index.ts --dts --clean --format esm","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/4cc6ba99582fa2094c9a692215c50529/adatechnology-web-chat-widget-0.1.0-rc.0.tgz","_integrity":"sha512-pNnZ9MNyTm5E+6bQPDFLtZnb8Cf8HKA/g5CELfSicNSSf6ERU5VGbzexXbDQ5SO6wm9uGc2uWk3ylr+1DoHyIw==","_npmVersion":"10.9.8","description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web-chat-widget_0.1.0-rc.0_1786476434639_0.7469974252643299","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.1":{"name":"@adatechnology/web-chat-widget","version":"0.1.0-rc.1","_id":"@adatechnology/web-chat-widget@0.1.0-rc.1","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"d4d0f3366351112665f1ee13d2658424a8caa7b8","tarball":"https://registry.npmjs.org/@adatechnology/web-chat-widget/-/web-chat-widget-0.1.0-rc.1.tgz","fileCount":4,"integrity":"sha512-Gy8qxE9qB2/CaGYBsAQ2dxoKDcqYOT0XZgbO4KbnZa7wgdBeub1tKpHqwIzP5MegwKCcyZAYQ+OyiurWFckR5w==","signatures":[{"sig":"MEUCIQDU4+jlHMz2DXmgI1mObSKJA/j5Y5q6oRj4wdNdvPwjcgIgHMQgTsyg0BZPy8w6VKe295B1cntY+wGOdguY/dkS++w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44330},"main":"dist/index.js","type":"module","_from":"file:adatechnology-web-chat-widget-0.1.0-rc.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"bun test","build":"tsup src/index.ts --dts --clean --format esm","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/a109657ed82f3d9dcdfd14dd56b97437/adatechnology-web-chat-widget-0.1.0-rc.1.tgz","_integrity":"sha512-Gy8qxE9qB2/CaGYBsAQ2dxoKDcqYOT0XZgbO4KbnZa7wgdBeub1tKpHqwIzP5MegwKCcyZAYQ+OyiurWFckR5w==","_npmVersion":"10.9.8","description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web-chat-widget_0.1.0-rc.1_1786479650400_0.6098273116201665","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.2":{"name":"@adatechnology/web-chat-widget","version":"0.1.0-rc.2","_id":"@adatechnology/web-chat-widget@0.1.0-rc.2","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"55f2bcd92ec4ae84124ac060db3c02bb41f12045","tarball":"https://registry.npmjs.org/@adatechnology/web-chat-widget/-/web-chat-widget-0.1.0-rc.2.tgz","fileCount":4,"integrity":"sha512-gu5xkPv1cSLOhOeY/aappIgO1uKNbHZ8TkYb9uYnigmm6nw9v29H9ZX84v8e23UCC8mfJuu7u1TJ82hyM3HFAA==","signatures":[{"sig":"MEUCIQDjL2fCf6aFVSwBIf1sK3SBoINitPzHKFE26/CS5Bn+IwIgC8f8Z9EXcBquOQSgH676aG3pVN0dHavHidKQPMGUjx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50039},"main":"dist/index.js","type":"module","_from":"file:adatechnology-web-chat-widget-0.1.0-rc.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"bun test","build":"tsup src/index.ts --dts --clean --format esm","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/bb5b0bf6a10a53f1f6deb6de880327a8/adatechnology-web-chat-widget-0.1.0-rc.2.tgz","_integrity":"sha512-gu5xkPv1cSLOhOeY/aappIgO1uKNbHZ8TkYb9uYnigmm6nw9v29H9ZX84v8e23UCC8mfJuu7u1TJ82hyM3HFAA==","_npmVersion":"10.9.8","description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web-chat-widget_0.1.0-rc.2_1786485600593_0.20143407150981152","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.3":{"name":"@adatechnology/web-chat-widget","version":"0.1.0-rc.3","_id":"@adatechnology/web-chat-widget@0.1.0-rc.3","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"25ba66dcfa5bdfe801c0676016c2b4dfeab4262e","tarball":"https://registry.npmjs.org/@adatechnology/web-chat-widget/-/web-chat-widget-0.1.0-rc.3.tgz","fileCount":4,"integrity":"sha512-HX8CdlXG6XaOAXJK7LU/SlLxe3qOboI/zEZKC6kYt/YbgEZVzCNn1i4Nnqv2iLcqdojt07NH5Ohop/o9v9R77Q==","signatures":[{"sig":"MEQCIGWAqgEqM+LB5UgFhYi0+Rn/u6szuZwuwoRXDc398n2gAiBA9FQ9oLpYA0dE1aAYjThurO/KyQxIg3HI8yMAyorBoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50544},"main":"dist/index.js","type":"module","_from":"file:adatechnology-web-chat-widget-0.1.0-rc.3.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"bun test","build":"tsup src/index.ts --dts --clean --format esm","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/858b8f08e5e4e65a5a5c4d3f39f93eba/adatechnology-web-chat-widget-0.1.0-rc.3.tgz","_integrity":"sha512-HX8CdlXG6XaOAXJK7LU/SlLxe3qOboI/zEZKC6kYt/YbgEZVzCNn1i4Nnqv2iLcqdojt07NH5Ohop/o9v9R77Q==","_npmVersion":"10.9.8","description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web-chat-widget_0.1.0-rc.3_1786487545944_0.9306429484249303","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.4":{"name":"@adatechnology/web-chat-widget","version":"0.1.0-rc.4","_id":"@adatechnology/web-chat-widget@0.1.0-rc.4","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"b9eff9d8326265bc738bb729b72acfbaf2df3575","tarball":"https://registry.npmjs.org/@adatechnology/web-chat-widget/-/web-chat-widget-0.1.0-rc.4.tgz","fileCount":7,"integrity":"sha512-Phx9qWeHC+p54k8RtxYo0BhKPGTZJ3Zm4V5m6ANX6L8jDN/YtQA8HW1kNc+79HrM3snKX6cUHfgfl9dAiTmE9A==","signatures":[{"sig":"MEUCIH8vACtZFkTA6DnlpAcDnP0q5hALUxfpoVLpLtcEutVMAiEAgJz5sHnQ1/JXmwtbRZ/ijL5h4gyDT7NljP75w5gnYrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55231},"main":"dist/index.js","type":"module","_from":"file:adatechnology-web-chat-widget-0.1.0-rc.4.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./simulator":{"types":"./dist/simulator/index.d.ts","import":"./dist/simulator/index.js"}},"scripts":{"test":"bun test","build":"tsup src/index.ts src/simulator/index.ts --dts --clean --format esm","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/124ee5db1c277ce5a8bca653deddb395/adatechnology-web-chat-widget-0.1.0-rc.4.tgz","_integrity":"sha512-Phx9qWeHC+p54k8RtxYo0BhKPGTZJ3Zm4V5m6ANX6L8jDN/YtQA8HW1kNc+79HrM3snKX6cUHfgfl9dAiTmE9A==","_npmVersion":"10.9.8","description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web-chat-widget_0.1.0-rc.4_1786742071781_0.8783919717275901","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@adatechnology/web-chat-widget","version":"0.1.0","description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","publishConfig":{"access":"public"},"type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./simulator":{"import":"./dist/simulator/index.js","types":"./dist/simulator/index.d.ts"}},"main":"dist/index.js","types":"dist/index.d.ts","devDependencies":{"@types/bun":"1.3.14","tsup":"^8.5.1","typescript":"^5.9.3"},"scripts":{"build":"tsup src/index.ts src/simulator/index.ts --dts --clean --format esm","check":"tsc -p tsconfig.json --noEmit","test":"bun test"},"_id":"@adatechnology/web-chat-widget@0.1.0","_integrity":"sha512-EA9+4X3+BypACGRa/QocVihC2M288WyZ4NPZVhquZOVR2xoLnC5W+8dLeItCqMsjRGTb/cXzwKBavmmL1GY9QQ==","_resolved":"/tmp/d2376b7d27ce48429a1cd0ba0da24c32/adatechnology-web-chat-widget-0.1.0.tgz","_from":"file:adatechnology-web-chat-widget-0.1.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-EA9+4X3+BypACGRa/QocVihC2M288WyZ4NPZVhquZOVR2xoLnC5W+8dLeItCqMsjRGTb/cXzwKBavmmL1GY9QQ==","shasum":"5360410484e2381ae75e03a8d8179165d48e1b64","tarball":"https://registry.npmjs.org/@adatechnology/web-chat-widget/-/web-chat-widget-0.1.0.tgz","fileCount":7,"unpackedSize":55226,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD8rsUbmmSSif0r8RWGgW5ZxRPocetWkaTp4FQhRNMrlQIgGGCwgp00RvOApwwkpufH9wD5ogkR409R9Z++OEvK5vM="}]},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"directories":{},"maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-chat-widget_0.1.0_1788318112625_0.41177563198626155"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-11T19:27:14.477Z","modified":"2026-09-02T03:01:52.963Z","0.1.0-rc.0":"2026-08-11T19:27:14.793Z","0.1.0-rc.1":"2026-08-11T20:20:50.549Z","0.1.0-rc.2":"2026-08-11T22:00:00.768Z","0.1.0-rc.3":"2026-08-11T22:32:26.118Z","0.1.0-rc.4":"2026-08-14T21:14:31.918Z","0.1.0":"2026-09-02T03:01:52.816Z"},"description":"Chat de site como Web Component nativo — sem framework, plugável em qualquer página","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"readme":"# @adatechnology/web-chat-widget\n\nChat de site como **Web Component nativo**. Sem React, sem framework, sem CSS global: o elemento\nmonta em shadow DOM fechado e não vaza estilo para a página do host — que é o requisito real quando\no widget vai enxertado numa landing que não é nossa.\n\n```bash\npnpm add @adatechnology/web-chat-widget\n```\n\n```ts\nimport { API_BASE_ATTRIBUTE, WIDGET_TAG_NAME } from '@adatechnology/web-chat-widget';\n\nconst widget = document.createElement(WIDGET_TAG_NAME);\nwidget.setAttribute(API_BASE_ATTRIBUTE, environment.apiBaseUrl);\ndocument.body.append(widget);\n```\n\nImportar o pacote já registra o elemento (`registerAdaChatWidget()` roda no import e é idempotente,\npara HMR e duplo carregamento não derrubarem a página). O atributo de base da API é obrigatório: a\norigem muda por ambiente e o servidor confere o `Origin`, então domínio chutado no código vira erro\nde CORS silencioso em produção.\n\n## O que ele faz\n\n- Bolhas agrupadas por janela de tempo, com rabinho, divisor de data, horário e recibo de entrega\n- Marcação `*negrito*` / `_itálico_` renderizada por `createElement`, **nunca** `innerHTML` — o texto\n  vem do editor de fluxo, que é entrada de usuário\n- Botões de resposta rápida a partir das opções do nó corrente\n- `autocomplete` / `inputMode` do campo de texto guiados pelo `answerKind` que a API carimba\n- Nota de voz por `MediaRecorder`, transcrita no servidor\n- Tema claro/escuro pelo sistema, `prefers-reduced-motion` respeitado, mascote embutido em SVG\n\n## Capacidade por ausência\n\nO microfone só aparece quando o navegador suporta `MediaRecorder` **e** a rota de áudio responde.\nNão há flag `hasAudio`: ausência de capacidade é ausência de affordance.\n\n## O contrato HTTP que o host precisa servir\n\nEste pacote é **só a metade do cliente**. Ele fala com quatro rotas, e o produto que o consome\nprecisa servi-las (hoje elas vivem no `api-ada`; quando houver segundo consumidor de backend, viram\num `web-chat-module`):\n\n| Rota | O que faz |\n|---|---|\n| `POST /v1/widget/sessions` | Abre a conversa; devolve `{ data: { sessionId } }` |\n| `GET /v1/widget/sessions/:id/messages?limit=` | Transcript; o último balão do bot carrega `payload.options` e `payload.answerKind` |\n| `POST /v1/widget/sessions/:id/messages` | Fala do visitante (`{ text }`); devolve `{ data: { outcome } }` |\n| `POST /v1/widget/sessions/:id/audio` | Nota de voz em multipart, campo `audio` |\n| `GET /v1/widget/sessions/:id/events` | SSE; só avisa que mudou, quem lê é o transcript |\n\nSucesso responde `{ data }`; erro responde `{ error: { code, message } }`. O widget escolhe a frase\nde falha pelo `code` — `CHANNEL_WIDGET_AUDIO_BUSY` e `RATE_LIMITED` pedem espera (com o header\n`Retry-After`), `CHANNEL_WIDGET_AUDIO_UNAVAILABLE` e `..._FAILED` convidam a escrever,\n`..._NOT_UNDERSTOOD` pede que repita. Status HTTP é só a rede para resposta de proxy sem corpo nosso.\n\n## Ainda não parametrizado\n\nTextos (`widget.locale.json`), cores e o mascote são fixos no bundle. O primeiro consumidor fora da\nAda Technology é o que justifica abrir `locale` e `theme` como portas — antes disso seria abstração\nsem consumidor.\n","readmeFilename":"README.md"}