feat(webchat): embeddable Web Chat widget as a channel connection

Web Chat is a WEB connection of a processing channel (SPEC-0003/ADR-0012),
reusing the whole contour: a public widget loads from the hub domain via one
async tag (<script src=hub.edevs.tech/chat-widget.js data-channel=...>), opens
an isolated iframe panel. Backend webchat app: public config/session/messages
endpoints (anonymous session, hash-at-rest token); inbound goes through the same
ingest (AI release + retrieval + handoff + notifications); WEB transport send is
a no-op (browser polls). Panel rebuilt 1:1 from the baseline (welcome+consent /
ai / operator / unavailable, quick replies, typing). nginx serves /chat-widget.js
and /chat/ from the hub domain; demo host page at /chat/demo.html. Verified
end-to-end: config→session→message→AI reply→poll.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
AndreyandClaude Opus 4.8 committed 2026-06-28 18:55:00 +03:00
1 parent 0881c838d7
commit d79ebda2b7
18 files changed
+649 -26

No files matched your search

+14
View File
@@ -9,6 +9,20 @@ server {
proxy_set_header X-Forwarded-Proto $scheme;
}
# Web Chat widget loader (served from the hub domain).
location = /chat-widget.js {
proxy_pass http://backend:8000;
proxy_set_header Host $host;
}
# Web Chat panel (iframe content) — Vite base /chat/.
location /chat/ {
proxy_pass http://web-chat:5175;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://internal-ui:5173;
proxy_set_header Host $host;