@burdenoff/website-sdk 2026.1102.2 → 2026.1102.3

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.
Files changed (46) hide show
  1. package/README.md +41 -2
  2. package/dist/avatar-live-view/index.d.mts +13 -4
  3. package/dist/avatar-live-view/index.d.ts +13 -4
  4. package/dist/avatar-live-view/index.js +1262 -257
  5. package/dist/avatar-live-view/index.js.map +1 -1
  6. package/dist/avatar-live-view/index.mjs +1260 -255
  7. package/dist/avatar-live-view/index.mjs.map +1 -1
  8. package/dist/{chunk-FQH3AJN3.js → chunk-7O2I32ZN.js} +2 -2
  9. package/dist/chunk-7O2I32ZN.js.map +1 -0
  10. package/dist/{chunk-R742FS5E.js → chunk-DZLUZKOX.js} +19 -17
  11. package/dist/{chunk-R742FS5E.js.map → chunk-DZLUZKOX.js.map} +1 -1
  12. package/dist/{chunk-SFT3WHN5.mjs → chunk-K3QZGJEH.mjs} +2 -2
  13. package/dist/chunk-K3QZGJEH.mjs.map +1 -0
  14. package/dist/{chunk-SK5UGG6A.js → chunk-P5GMVPR6.js} +76 -20
  15. package/dist/chunk-P5GMVPR6.js.map +1 -0
  16. package/dist/{chunk-EUPFS6MZ.mjs → chunk-SMD7MEEA.mjs} +76 -20
  17. package/dist/chunk-SMD7MEEA.mjs.map +1 -0
  18. package/dist/{chunk-ETI2HQEC.mjs → chunk-ZWEEBHXJ.mjs} +4 -4
  19. package/dist/{chunk-ETI2HQEC.mjs.map → chunk-ZWEEBHXJ.mjs.map} +1 -1
  20. package/dist/components/explore.d.mts +2 -2
  21. package/dist/components/explore.d.ts +2 -2
  22. package/dist/components/explore.js +14 -14
  23. package/dist/components/explore.mjs +2 -2
  24. package/dist/{explore-DUTNYUOm.d.mts → explore-DaSNdm4O.d.mts} +1 -1
  25. package/dist/{explore-DjQE7Xia.d.ts → explore-DtSPdlEy.d.ts} +1 -1
  26. package/dist/{explore-avatar-live-config-Cetx8-Zu.d.ts → explore-avatar-live-config-CAfN5eAX.d.ts} +6 -3
  27. package/dist/{explore-avatar-live-config-Bp3kQbU2.d.mts → explore-avatar-live-config-N4WhJzgS.d.mts} +6 -3
  28. package/dist/{explore-types-Bb2Ih3d8.d.mts → explore-types-Ol1Mm3dW.d.mts} +12 -1
  29. package/dist/{explore-types-Bb2Ih3d8.d.ts → explore-types-Ol1Mm3dW.d.ts} +12 -1
  30. package/dist/hooks/index.d.mts +2 -2
  31. package/dist/hooks/index.d.ts +2 -2
  32. package/dist/hooks/index.js +9 -9
  33. package/dist/hooks/index.mjs +1 -1
  34. package/dist/index.d.mts +15 -9
  35. package/dist/index.d.ts +15 -9
  36. package/dist/index.js +92 -63
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.mjs +35 -6
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/{use-explore-chat-DunjG-3p.d.ts → use-explore-chat-B3dOOvJN.d.ts} +43 -3
  41. package/dist/{use-explore-chat-zRuoAin6.d.mts → use-explore-chat-CbfohA9O.d.mts} +43 -3
  42. package/package.json +1 -1
  43. package/dist/chunk-EUPFS6MZ.mjs.map +0 -1
  44. package/dist/chunk-FQH3AJN3.js.map +0 -1
  45. package/dist/chunk-SFT3WHN5.mjs.map +0 -1
  46. package/dist/chunk-SK5UGG6A.js.map +0 -1
package/README.md CHANGED
@@ -320,7 +320,7 @@ publishes audio, video or data, and it sends the avatar nothing to say.
320
320
  what the Avatar view shows until it arrives (the same picture, and the same
321
321
  bytes in a server render or a prerendered page, as before). A site that never
322
322
  passes `avatar.live` never downloads it: its bundle grows by under a kilobyte
323
- gzipped, instead of the roughly twelve the view weighs. Your bundler needs
323
+ gzipped, instead of the roughly twenty-five the view weighs. Your bundler needs
324
324
  to split dynamic imports, as Vite, webpack and Rollup do. If the file cannot
325
325
  be fetched (offline, or a deploy has replaced it), or has not arrived after
326
326
  eight seconds, the Avatar view shows what it showed before the live avatar,
@@ -358,6 +358,36 @@ publishes audio, video or data, and it sends the avatar nothing to say.
358
358
  turning the bot check on or off is a server config change: a site needs no
359
359
  new build for it, as long as its build carries a site key for `turnstile` and
360
360
  its CSP allows Cloudflare (below).
361
+ - **The Avatar tab's own question box (web API contract v1.3, additive).** The
362
+ availability answer's `questions` says which first questions the server
363
+ reads the answer to: `"suggested"` (only the exact suggested questions, as
364
+ before) or `"any"` (a question the visitor typed too). A server older than
365
+ v1.3 sends none and is read as `suggested`; an unknown value leaves the view
366
+ as it was. Under `any`, and only with consent copy written for it (below),
367
+ the Avatar tab has a box of its own ("Ask the avatar…", at most 300
368
+ characters, text only, Enter to ask) and the panel's suggested questions as
369
+ chips. A question asked there is the first of a new chat, sent with
370
+ `surface: "AVATAR"` (the chat's own composer never sends a surface), and its
371
+ first answer is the only one the card is offered for: the card shows while
372
+ the answer is written, with **Start when ready**. That press is bound to this
373
+ conversation, its question and the answer on its way, the site, the locale,
374
+ the page and the consent version and bot check; any of them changing, Cancel,
375
+ leaving the tab, closing the panel or hiding the page calls it off with
376
+ nothing created. Once the answer is ready the view asks availability again
377
+ and checks the answer as the service will (an answer, one to sixty-four
378
+ references, no files, under fourteen minutes old), and creates the session
379
+ only if nothing differs; otherwise it shows the card for what is offered now.
380
+ A create is never sent again by itself. A conversation that is not a new
381
+ chat started in the tab (a question asked in Chat, a second question, an
382
+ answer too old) is never read and never reset by the tab: it offers **New
383
+ chat for the avatar** ("Your current chat stays in History."), and the box
384
+ appears after that tap. After the day's session (a `limits` refusal, or this
385
+ browser's own note of a session today, kept in `localStorage` as
386
+ `boff.explore.avatarUsedOn`), the box asks ordinary questions, without
387
+ `surface`, and the answer shows in the tab as text, with "Read the answer and
388
+ sources in Chat". Pass `currentPath` to `ExplorePanel` (as
389
+ `SiteAssistantDock` does) so a page change calls off a "Start when ready"
390
+ at once; without it, the window's path is checked before the create.
361
391
  - **One answer: the first, to a suggested question.** The avatar service
362
392
  accepts a conversation only when it holds exactly two messages: the first user
363
393
  message (a suggested question) and the first assistant answer, completed. The
@@ -416,7 +446,16 @@ publishes audio, video or data, and it sends the avatar nothing to say.
416
446
  version that says so, or the view stays as it was.
417
447
  `web-consent-2026-10-31` (which names the product, "a suggested Healthy Bowl
418
448
  question") and `web-consent-2026-11` stay, unchanged, for servers that still
419
- name them.
449
+ name them. Each version also says which questions its words describe, and the
450
+ card is shown only where the server's `questions` is the same.
451
+ `web-consent-2026-11-05` (bot check `turnstile`, 904 bytes, SHA-256
452
+ `75e7e6e84d68bba35ccb208151e2e9e20c69efac2896b17b1d2f1cda46d0bb9f`) and
453
+ `web-consent-2026-11-06` (bot check `off`, 860 bytes, SHA-256
454
+ `f5a673f6c325fe2032f59a561169f5ad8b8598d615e78abbe7b65314e4e6f7bd`) are the
455
+ versions for `questions: "any"`: the avatar reads "the first answer in a new
456
+ chat started in the Avatar tab, provided it passes the speech checks, whether
457
+ you chose a suggested question or typed your own", and the visitor is told
458
+ not to put personal details in a typed question.
420
459
  - **How a session ended.** When the worker leaves, the server closes the room,
421
460
  or the session's time runs out with the room still open, the view says only
422
461
  "The live avatar has ended." (key `finished`). The browser
@@ -1,9 +1,9 @@
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-Bp3kQbU2.mjs';
3
+ import { E as ExplorePanelAvatarLive, a as ExploreLocale, A as AvatarConversation } from '../explore-avatar-live-config-N4WhJzgS.mjs';
4
4
  import '../types-CndbmBK-.mjs';
5
- import '../use-explore-chat-zRuoAin6.mjs';
6
- import '../explore-types-Bb2Ih3d8.mjs';
5
+ import '../use-explore-chat-CbfohA9O.mjs';
6
+ import '../explore-types-Ol1Mm3dW.mjs';
7
7
 
8
8
  interface AvatarLiveViewProps {
9
9
  live: ExplorePanelAvatarLive;
@@ -28,6 +28,15 @@ interface AvatarLiveViewProps {
28
28
  * `reset`, as the chat's own New chat button does, then the Chat tab) where this conversation can never be read.
29
29
  */
30
30
  newChat: string;
31
+ /** "Send" and "Try asking" in the panel's language, for the Avatar tab's own question box. */
32
+ send: string;
33
+ tryAsking: string;
34
+ /** The suggested questions the chat view shows: the box's chips. */
35
+ prompts: readonly string[];
36
+ /** No precise pointer: the box is not focused by itself, so the keyboard does not cover the view. */
37
+ touchFirst: boolean;
38
+ /** The host router's path, when it has one: a "Start when ready" is called off when it changes. */
39
+ currentPath: string | undefined;
31
40
  /**
32
41
  * Nothing to ask the server about: an incomplete config, no gateway, no shared conversation to read (no provider, or a
33
42
  * read-only shared one), or a locale whose strings have not been reviewed. The tab stays as it was. Decided by
@@ -42,6 +51,6 @@ interface AvatarLiveViewProps {
42
51
  /** The panel's conversation, null when there is no provider. */
43
52
  conversation: AvatarConversation | null;
44
53
  }
45
- declare function AvatarLiveView({ live, active, locale, productName, still, fallback, onContinueInChat, continueInChat, newChat, off, base, headers, conversation, }: AvatarLiveViewProps): react.JSX.Element;
54
+ declare function AvatarLiveView({ live, active, locale, productName, still, fallback, onContinueInChat, continueInChat, newChat, send, tryAsking, prompts, touchFirst, currentPath, off, base, headers, conversation, }: AvatarLiveViewProps): react.JSX.Element;
46
55
 
47
56
  export { AvatarLiveView, type AvatarLiveViewProps };
@@ -1,9 +1,9 @@
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-Cetx8-Zu.js';
3
+ import { E as ExplorePanelAvatarLive, a as ExploreLocale, A as AvatarConversation } from '../explore-avatar-live-config-CAfN5eAX.js';
4
4
  import '../types-CndbmBK-.js';
5
- import '../use-explore-chat-DunjG-3p.js';
6
- import '../explore-types-Bb2Ih3d8.js';
5
+ import '../use-explore-chat-B3dOOvJN.js';
6
+ import '../explore-types-Ol1Mm3dW.js';
7
7
 
8
8
  interface AvatarLiveViewProps {
9
9
  live: ExplorePanelAvatarLive;
@@ -28,6 +28,15 @@ interface AvatarLiveViewProps {
28
28
  * `reset`, as the chat's own New chat button does, then the Chat tab) where this conversation can never be read.
29
29
  */
30
30
  newChat: string;
31
+ /** "Send" and "Try asking" in the panel's language, for the Avatar tab's own question box. */
32
+ send: string;
33
+ tryAsking: string;
34
+ /** The suggested questions the chat view shows: the box's chips. */
35
+ prompts: readonly string[];
36
+ /** No precise pointer: the box is not focused by itself, so the keyboard does not cover the view. */
37
+ touchFirst: boolean;
38
+ /** The host router's path, when it has one: a "Start when ready" is called off when it changes. */
39
+ currentPath: string | undefined;
31
40
  /**
32
41
  * Nothing to ask the server about: an incomplete config, no gateway, no shared conversation to read (no provider, or a
33
42
  * read-only shared one), or a locale whose strings have not been reviewed. The tab stays as it was. Decided by
@@ -42,6 +51,6 @@ interface AvatarLiveViewProps {
42
51
  /** The panel's conversation, null when there is no provider. */
43
52
  conversation: AvatarConversation | null;
44
53
  }
45
- declare function AvatarLiveView({ live, active, locale, productName, still, fallback, onContinueInChat, continueInChat, newChat, off, base, headers, conversation, }: AvatarLiveViewProps): react.JSX.Element;
54
+ declare function AvatarLiveView({ live, active, locale, productName, still, fallback, onContinueInChat, continueInChat, newChat, send, tryAsking, prompts, touchFirst, currentPath, off, base, headers, conversation, }: AvatarLiveViewProps): react.JSX.Element;
46
55
 
47
56
  export { AvatarLiveView, type AvatarLiveViewProps };