@burdenoff/website-sdk 2026.1104.4 → 2026.1105.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -63,8 +63,9 @@ in `tsup.config.ts`) and the package declares `"sideEffects": false`:
63
63
 
64
64
  The live-avatar guarantees are unchanged: `livekit-client` stays external to
65
65
  the `./avatar-live` entry alone, and the avatar's view remains a chunk of its
66
- own that only the root loads on demand (`scripts/validate-avatar-live.mjs`
67
- fails the build otherwise).
66
+ own that only the root loads on demand, as does the Avatar tab's mic, which
67
+ only the view loads (`scripts/validate-avatar-live.mjs` fails the build
68
+ otherwise).
68
69
 
69
70
  ## Quick Start
70
71
 
@@ -395,6 +396,30 @@ publishes audio, video or data, and it sends the avatar nothing to say.
395
396
  `ExplorePanel` (as `SiteAssistantDock` does) so a page change calls off a
396
397
  "Start when ready" at once; without it, the window's path is checked before
397
398
  the create.
399
+ - **A mic in the Avatar tab's box (BOFF-9797 Stage C, opt-in, dark).** With
400
+ `mic: true` on `avatar.live` (or `websiteAvatarLive({ …, mic: true })`; no
401
+ site sets it yet), the box gets a mic button beside Send, but only while the
402
+ last availability answer carries the gateway's mic offer (`stt: {token,
403
+ expiresAt}`, sent only while the gateway's website speech-to-text is on) and
404
+ the box takes the first question of a new chat. Tap to start, tap to stop,
405
+ thirty seconds at most (it stops by itself), with a recording dot, the time
406
+ against `0:30` and the words as they are recognised. The final text goes into
407
+ the box (after anything typed, within its 300 characters): the visitor
408
+ corrects it and presses Send. **Nothing is ever sent by itself.** The first
409
+ tap shows a mic notice of its own (versioned: the SDK shows and names
410
+ `web-mic-2026-11-05`, and the speech service takes a press only when that is
411
+ its `AVATAR_WEB_STT_NOTICE_VERSION`), then the browser's permission prompt; a
412
+ refused permission says so and the box stays for typing. The stream is the
413
+ gateway's `wss://…/api/web-avatar/v1/stt/stream` (subprotocols
414
+ `boff.web-stt.v1` and `offer.<token>`, `en-IN`, 16 kHz PCM); a refused
415
+ upgrade (4401) asks availability again and retries once. The microphone is
416
+ released on tap-stop, the limit, Stop, closing the panel, the Chat tab, a
417
+ hidden page, `pagehide`, the view going and any error. Its capture (ported
418
+ from fe-libs), stream and state machine are a chunk of their own,
419
+ `dist/avatar-mic/`, loaded from the view the first time the mic is used: a
420
+ site's main bundle and the view's chunk carry none of it. On alpha, a browser
421
+ WebSocket cannot carry Cloudflare Access service-token headers, so the
422
+ stream needs the Access cookie for the gateway host.
398
423
  - **One answer: the first, to a suggested question.** The avatar service
399
424
  accepts a conversation only when it holds exactly two messages: the first user
400
425
  message (a suggested question) and the first assistant answer, completed. The
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { E as ExplorePanelAvatarLive, a as ExploreLocale, A as AvatarConversation } from '../explore-avatar-live-config-B6_p0q1c.mjs';
3
+ import { E as ExplorePanelAvatarLive, a as ExploreLocale, A as AvatarConversation } from '../explore-avatar-live-config-OO0hvQCK.mjs';
4
4
  import '../types-CXqaLlNB.mjs';
5
5
  import '../use-explore-chat-CbfohA9O.mjs';
6
6
  import '../explore-types-Ol1Mm3dW.mjs';
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { E as ExplorePanelAvatarLive, a as ExploreLocale, A as AvatarConversation } from '../explore-avatar-live-config-DRpS-mqQ.js';
3
+ import { E as ExplorePanelAvatarLive, a as ExploreLocale, A as AvatarConversation } from '../explore-avatar-live-config-C-OwXNje.js';
4
4
  import '../types-CXqaLlNB.js';
5
5
  import '../use-explore-chat-B3dOOvJN.js';
6
6
  import '../explore-types-Ol1Mm3dW.js';