@helpai/elements 1.1.12 → 1.1.14

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/index.d.ts CHANGED
@@ -41,7 +41,7 @@ interface ClientStorage {
41
41
  * populated {@link Strings} map. UI components then read `strings.send` as a
42
42
  * normal property access — no per-render lookup, no per-render allocation.
43
43
  */
44
- type StringKey = "launcherOpen" | "launcherLabel" | "panelTitle" | "composerPlaceholder" | "send" | "stop" | "attach" | "micStart" | "micStop" | "micUnsupported" | "expand" | "collapse" | "fullscreen" | "exitFullscreen" | "resizeHandle" | "scrollToBottom" | "close" | "moreActions" | "soundOn" | "soundOff" | "language" | "theme" | "themeAuto" | "themeLight" | "themeDark" | "textSize" | "textSizeSmall" | "textSizeNormal" | "textSizeLarge" | "history" | "historyTitle" | "historyEmpty" | "historyLoading" | "historyBack" | "historyContinue" | "loadMoreConversations" | "conversationLoading" | "loadPreviousMessages" | "conversationClosed" | "startNewConversation" | "talkToOperator" | "connectingOperator" | "noOperatorAvailable" | "chattingWithOperator" | "cancelOperatorRequest" | "dateToday" | "dateYesterday" | "dateLastWeek" | "dateOlder" | "newConversation" | "dropZone" | "attachmentTooLarge" | "attachmentTooMany" | "attachmentMimeRejected" | "errorRetry" | "errorGeneric" | "errorRateLimited" | "loading" | "thinking" | "thoughts" | "toolResult" | "sources" | "feedbackUp" | "feedbackDown" | "feedbackThanks" | "copy" | "copied" | "collapseSidebar" | "expandSidebar" | "formSubmit" | "formSkip" | "formSubmitted" | "formSkipped" | "formFillOut" | "formRequired" | "formInvalidEmail" | "formInvalidTel" | "formInvalidUrl" | "formInvalidNumber" | "formTooShort" | "formTooLong" | "formNumberTooSmall" | "formNumberTooLarge" | "formPatternMismatch" | "formChooseAtLeast" | "formChooseAtMost" | "formOther" | "formOtherPlaceholder" | "inputRequired" | "inputBadge" | "inputAnswered" | "inputSkipped" | "inputSubmit" | "inputSubmitHint" | "inputSkip" | "showOptions" | "hideOptions" | "qtypeText" | "qtypeEmail" | "qtypePhone" | "qtypeNumber" | "qtypeDate" | "qtypeChooseOne" | "qtypeChooseAny" | "qtypeBoolean" | "confirmYes" | "confirmNo" | "approve" | "reject" | "approvalPrompt" | "approvalBody" | "approvalYourResponse" | "approvalEditHint" | "approvalSubmitting" | "edit" | "toolParameters" | "statusAwaiting" | "statusResponded" | "statusCompleted" | "statusDenied" | "statusError" | "statusRunning" | "statusSuperseded" | "tabHome" | "tabConversations" | "tabHelp" | "tabNews" | "modulesEmpty" | "moduleBack" | "contentLoading" | "homeGreeting" | "homeGreetingNamed" | "homeGreetingLead" | "homeSearchPlaceholder" | "homeContentTitle" | "homeStatus" | "helpTitle" | "helpSearchPlaceholder" | "helpEmpty" | "helpLoading" | "helpSearchEmpty" | "newsTitle" | "newsEmpty" | "newsLoading" | "newsBack" | "newsPublishedAt";
44
+ type StringKey = "launcherOpen" | "launcherLabel" | "panelTitle" | "composerPlaceholder" | "send" | "stop" | "attach" | "micStart" | "micStop" | "micUnsupported" | "expand" | "collapse" | "fullscreen" | "exitFullscreen" | "popOut" | "resizeHandle" | "scrollToBottom" | "close" | "moreActions" | "soundOn" | "soundOff" | "language" | "theme" | "themeAuto" | "themeLight" | "themeDark" | "textSize" | "textSizeSmall" | "textSizeNormal" | "textSizeLarge" | "history" | "historyTitle" | "historyEmpty" | "historyLoading" | "historyBack" | "historyContinue" | "loadMoreConversations" | "conversationLoading" | "loadPreviousMessages" | "conversationClosed" | "startNewConversation" | "talkToOperator" | "connectingOperator" | "noOperatorAvailable" | "chattingWithOperator" | "cancelOperatorRequest" | "dateToday" | "dateYesterday" | "dateLastWeek" | "dateOlder" | "newConversation" | "dropZone" | "attachmentTooLarge" | "attachmentTooMany" | "attachmentMimeRejected" | "errorRetry" | "errorGeneric" | "errorRateLimited" | "loading" | "thinking" | "thoughts" | "toolResult" | "sources" | "feedbackUp" | "feedbackDown" | "feedbackThanks" | "copy" | "copied" | "collapseSidebar" | "expandSidebar" | "formSubmit" | "formSkip" | "formSubmitted" | "formSkipped" | "formFillOut" | "formRequired" | "formInvalidEmail" | "formInvalidTel" | "formInvalidUrl" | "formInvalidNumber" | "formTooShort" | "formTooLong" | "formNumberTooSmall" | "formNumberTooLarge" | "formPatternMismatch" | "formChooseAtLeast" | "formChooseAtMost" | "formOther" | "formOtherPlaceholder" | "inputRequired" | "inputBadge" | "inputAnswered" | "inputSkipped" | "inputSubmit" | "inputSubmitHint" | "inputSkip" | "showOptions" | "hideOptions" | "qtypeText" | "qtypeEmail" | "qtypePhone" | "qtypeNumber" | "qtypeDate" | "qtypeChooseOne" | "qtypeChooseAny" | "qtypeBoolean" | "confirmYes" | "confirmNo" | "approve" | "reject" | "approvalPrompt" | "approvalBody" | "approvalYourResponse" | "approvalEditHint" | "approvalSubmitting" | "edit" | "toolParameters" | "statusAwaiting" | "statusResponded" | "statusCompleted" | "statusDenied" | "statusError" | "statusRunning" | "statusSuperseded" | "tabHome" | "tabConversations" | "tabHelp" | "tabNews" | "modulesEmpty" | "moduleBack" | "contentLoading" | "homeGreeting" | "homeGreetingNamed" | "homeGreetingLead" | "homeSearchPlaceholder" | "homeContentTitle" | "homeStatus" | "helpTitle" | "helpSearchPlaceholder" | "helpEmpty" | "helpLoading" | "helpSearchEmpty" | "newsTitle" | "newsEmpty" | "newsLoading" | "newsBack" | "newsPublishedAt";
45
45
  /** A partial map for one locale — what overrides look like on the wire. */
46
46
  type LocaleStrings = Partial<Record<StringKey, string>>;
47
47
  /**
@@ -120,13 +120,14 @@ type ResponseMode = "streaming" | "buffered";
120
120
  * - `clear` — Start a new conversation (compose icon).
121
121
  * - `expand` — Toggle `normal` ↔ `expanded` (1.5× panel).
122
122
  * - `fullscreen` — Toggle `normal` ↔ `fullscreen` (viewport fill).
123
+ * - `popOut` — Open the active conversation in a dedicated tab.
123
124
  * - `sound` — Toggle notification sounds + haptics on/off (switch-style).
124
125
  * - `language` — Switch the UI locale at runtime.
125
126
  * - `theme` — Cycle `auto` / `light` / `dark`.
126
127
  * - `textSize` — Cycle `normal` / `large` / `small`.
127
128
  * - `close` — Close the floating panel.
128
129
  */
129
- type ActionName = "clear" | "expand" | "fullscreen" | "sound" | "history" | "language" | "theme" | "textSize" | "close";
130
+ type ActionName = "clear" | "expand" | "fullscreen" | "popOut" | "sound" | "history" | "language" | "theme" | "textSize" | "close";
130
131
  /**
131
132
  * The header's enabled actions. Unlisted actions are hidden; order is
132
133
  * irrelevant. Per-mode defaults (`DEFAULT_ACTIONS_BY_MODE`) pick a sensible
@@ -718,6 +719,8 @@ interface BehaviorOptions {
718
719
  disableMessageFeedback?: boolean;
719
720
  /** Auto-send a suggestion chip's text on tap. Unset/`false` = fill the composer to edit (default). */
720
721
  autoSendSuggestions?: boolean;
722
+ /** URL opened by the `popOut` header action. */
723
+ popOutUrl?: string;
721
724
  }
722
725
  /**
723
726
  * Section: panel header actions — the enabled set (`history`/`close` buttons +
@@ -772,7 +775,8 @@ interface FooterOptions {
772
775
  * and the agent purely as **informational context** — never as an auth
773
776
  * credential. The widget runs on third-party sites (e.g. `example.com`); some
774
777
  * have their own login, others are guest-only. We don't register or
775
- * authenticate these users (auth is the workspace `publicKey`).
778
+ * authenticate these users (browser access always identifies a deployment;
779
+ * a public key is optional for intentional guest mode).
776
780
  *
777
781
  * `id` / `email` / `name` are recognised fields used for the Home greeting and
778
782
  * transcripts; any extra scalar fields become custom context the agent can use
@@ -898,7 +902,9 @@ interface ResolvedTracking {
898
902
  //#region src/core/config/types/widget.d.ts
899
903
  /**
900
904
  * Raw options passed to {@link mount}, {@link init}, the Web Component, or
901
- * the `<script data-*>` auto-boot path. Every field is optional.
905
+ * the `<script data-*>` auto-boot path. The public `mount()` / `init()`
906
+ * boundary requires `aiAgentDeploymentId`; parsers keep it optional while
907
+ * assembling an attribute snapshot so a missing value can fail at that boundary.
902
908
  *
903
909
  * Two layers:
904
910
  *
@@ -922,9 +928,9 @@ interface ChatWidgetOptions {
922
928
  * cached userPrefs). Default: `"default"`.
923
929
  */
924
930
  widgetId?: string;
925
- /** Workspace-scoped public key (`agent_pk_...`). Sent as `x-public-key`. */
931
+ /** Deployment public key (`agent_pk_...`). Sent as `x-public-key` when present. */
926
932
  publicKey?: string;
927
- /** Deployment ID (UUID). Sent as `x-ai-agent-deployment-id`. */
933
+ /** Deployment ID (UUID). Required by every public mount and sent as `x-ai-agent-deployment-id`. */
928
934
  aiAgentDeploymentId?: string;
929
935
  /**
930
936
  * MAIN site origin (no trailing slash, e.g. `https://help.ai`). The API
@@ -1031,6 +1037,8 @@ interface ResolvedOptions {
1031
1037
  enableMessageFeedback: boolean;
1032
1038
  /** Auto-send a suggestion chip's text on tap (vs. filling the composer to edit). Default `false`. */
1033
1039
  autoSendSuggestions: boolean;
1040
+ /** URL opened by the `popOut` action. Absent means the action is hidden. */
1041
+ popOutUrl?: string;
1034
1042
  features: ResolvedFeatures;
1035
1043
  /** Resolved event-driven forms — ordered list + trigger index. */
1036
1044
  forms: ResolvedForms;
@@ -1556,7 +1564,7 @@ type Link = z.infer<typeof linkSchema>;
1556
1564
  declare const connectionConfigSchema: z.ZodObject<{
1557
1565
  widgetId: z.ZodDefault<z.ZodString>;
1558
1566
  publicKey: z.ZodOptional<z.ZodString>;
1559
- aiAgentDeploymentId: z.ZodOptional<z.ZodString>;
1567
+ aiAgentDeploymentId: z.ZodString;
1560
1568
  baseUrl: z.ZodOptional<z.ZodString>;
1561
1569
  agentApiBaseUrl: z.ZodOptional<z.ZodString>;
1562
1570
  dataApiBaseUrl: z.ZodOptional<z.ZodString>;
@@ -1651,6 +1659,7 @@ declare const widgetSettingsSchema: z.ZodObject<{
1651
1659
  showSources: z.ZodDefault<z.ZodBoolean>;
1652
1660
  disableMessageFeedback: z.ZodDefault<z.ZodBoolean>;
1653
1661
  autoSendSuggestions: z.ZodDefault<z.ZodBoolean>;
1662
+ popOutUrl: z.ZodOptional<z.ZodString>;
1654
1663
  }, z.core.$loose>>;
1655
1664
  theme: z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
1656
1665
  auto: "auto";
@@ -1703,6 +1712,7 @@ declare const widgetSettingsSchema: z.ZodObject<{
1703
1712
  fullscreen: "fullscreen";
1704
1713
  clear: "clear";
1705
1714
  theme: "theme";
1715
+ popOut: "popOut";
1706
1716
  sound: "sound";
1707
1717
  history: "history";
1708
1718
  language: "language";
@@ -1902,7 +1912,7 @@ type WidgetSettings = z.infer<typeof widgetSettingsSchema>;
1902
1912
  declare const widgetConfigSchema: z.ZodObject<{
1903
1913
  widgetId: z.ZodDefault<z.ZodString>;
1904
1914
  publicKey: z.ZodOptional<z.ZodString>;
1905
- aiAgentDeploymentId: z.ZodOptional<z.ZodString>;
1915
+ aiAgentDeploymentId: z.ZodString;
1906
1916
  baseUrl: z.ZodOptional<z.ZodString>;
1907
1917
  agentApiBaseUrl: z.ZodOptional<z.ZodString>;
1908
1918
  dataApiBaseUrl: z.ZodOptional<z.ZodString>;
@@ -1986,6 +1996,7 @@ declare const widgetConfigSchema: z.ZodObject<{
1986
1996
  showSources: z.ZodDefault<z.ZodBoolean>;
1987
1997
  disableMessageFeedback: z.ZodDefault<z.ZodBoolean>;
1988
1998
  autoSendSuggestions: z.ZodDefault<z.ZodBoolean>;
1999
+ popOutUrl: z.ZodOptional<z.ZodString>;
1989
2000
  }, z.core.$loose>>;
1990
2001
  theme: z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
1991
2002
  auto: "auto";
@@ -2038,6 +2049,7 @@ declare const widgetConfigSchema: z.ZodObject<{
2038
2049
  fullscreen: "fullscreen";
2039
2050
  clear: "clear";
2040
2051
  theme: "theme";
2052
+ popOut: "popOut";
2041
2053
  sound: "sound";
2042
2054
  history: "history";
2043
2055
  language: "language";
@@ -2236,7 +2248,7 @@ type WidgetConfig = z.infer<typeof widgetConfigSchema>;
2236
2248
  declare const widgetConfigPartialSchema: z.ZodObject<{
2237
2249
  widgetId: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2238
2250
  publicKey: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2239
- aiAgentDeploymentId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2251
+ aiAgentDeploymentId: z.ZodOptional<z.ZodString>;
2240
2252
  baseUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2241
2253
  agentApiBaseUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2242
2254
  dataApiBaseUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
@@ -2320,6 +2332,7 @@ declare const widgetConfigPartialSchema: z.ZodObject<{
2320
2332
  showSources: z.ZodDefault<z.ZodBoolean>;
2321
2333
  disableMessageFeedback: z.ZodDefault<z.ZodBoolean>;
2322
2334
  autoSendSuggestions: z.ZodDefault<z.ZodBoolean>;
2335
+ popOutUrl: z.ZodOptional<z.ZodString>;
2323
2336
  }, z.core.$loose>>>;
2324
2337
  theme: z.ZodOptional<z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
2325
2338
  auto: "auto";
@@ -2372,6 +2385,7 @@ declare const widgetConfigPartialSchema: z.ZodObject<{
2372
2385
  fullscreen: "fullscreen";
2373
2386
  clear: "clear";
2374
2387
  theme: "theme";
2388
+ popOut: "popOut";
2375
2389
  sound: "sound";
2376
2390
  history: "history";
2377
2391
  language: "language";
@@ -2614,6 +2628,7 @@ declare const widgetSettingsPartialSchema: z.ZodObject<{
2614
2628
  showSources: z.ZodDefault<z.ZodBoolean>;
2615
2629
  disableMessageFeedback: z.ZodDefault<z.ZodBoolean>;
2616
2630
  autoSendSuggestions: z.ZodDefault<z.ZodBoolean>;
2631
+ popOutUrl: z.ZodOptional<z.ZodString>;
2617
2632
  }, z.core.$loose>>>;
2618
2633
  theme: z.ZodOptional<z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
2619
2634
  auto: "auto";
@@ -2666,6 +2681,7 @@ declare const widgetSettingsPartialSchema: z.ZodObject<{
2666
2681
  fullscreen: "fullscreen";
2667
2682
  clear: "clear";
2668
2683
  theme: "theme";
2684
+ popOut: "popOut";
2669
2685
  sound: "sound";
2670
2686
  history: "history";
2671
2687
  language: "language";
@@ -2859,7 +2875,7 @@ type WidgetSettingsPartial = z.infer<typeof widgetSettingsPartialSchema>;
2859
2875
  declare const connectionConfigPartialSchema: z.ZodObject<{
2860
2876
  widgetId: z.ZodOptional<z.ZodDefault<z.ZodString>>;
2861
2877
  publicKey: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2862
- aiAgentDeploymentId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2878
+ aiAgentDeploymentId: z.ZodOptional<z.ZodString>;
2863
2879
  baseUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2864
2880
  agentApiBaseUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
2865
2881
  dataApiBaseUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
@@ -2966,6 +2982,7 @@ declare const serverConfigSchema: z.ZodObject<{
2966
2982
  showSources: z.ZodDefault<z.ZodBoolean>;
2967
2983
  disableMessageFeedback: z.ZodDefault<z.ZodBoolean>;
2968
2984
  autoSendSuggestions: z.ZodDefault<z.ZodBoolean>;
2985
+ popOutUrl: z.ZodOptional<z.ZodString>;
2969
2986
  }, z.core.$loose>>>;
2970
2987
  theme: z.ZodOptional<z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
2971
2988
  auto: "auto";
@@ -3018,6 +3035,7 @@ declare const serverConfigSchema: z.ZodObject<{
3018
3035
  fullscreen: "fullscreen";
3019
3036
  clear: "clear";
3020
3037
  theme: "theme";
3038
+ popOut: "popOut";
3021
3039
  sound: "sound";
3022
3040
  history: "history";
3023
3041
  language: "language";
@@ -3252,6 +3270,7 @@ declare const handshakeResponseSchema: z.ZodObject<{
3252
3270
  showSources: z.ZodDefault<z.ZodBoolean>;
3253
3271
  disableMessageFeedback: z.ZodDefault<z.ZodBoolean>;
3254
3272
  autoSendSuggestions: z.ZodDefault<z.ZodBoolean>;
3273
+ popOutUrl: z.ZodOptional<z.ZodString>;
3255
3274
  }, z.core.$loose>>>;
3256
3275
  theme: z.ZodOptional<z.ZodDefault<z.ZodUnion<readonly [z.ZodEnum<{
3257
3276
  auto: "auto";
@@ -3304,6 +3323,7 @@ declare const handshakeResponseSchema: z.ZodObject<{
3304
3323
  fullscreen: "fullscreen";
3305
3324
  clear: "clear";
3306
3325
  theme: "theme";
3326
+ popOut: "popOut";
3307
3327
  sound: "sound";
3308
3328
  history: "history";
3309
3329
  language: "language";
@@ -3569,15 +3589,16 @@ interface ChatWidgetInstance {
3569
3589
  *
3570
3590
  * @example Single widget (default):
3571
3591
  * ```ts
3572
- * mount({ publicKey, presentation: { mode: 'inline' }, target: document.getElementById('chat') });
3592
+ * mount({ publicKey, aiAgentDeploymentId, presentation: { mode: 'inline' }, target: document.getElementById('chat') });
3573
3593
  * ```
3574
3594
  * @example Two widgets on one page:
3575
3595
  * ```ts
3576
- * mount({ widgetId: 'support', publicKey: KEY_A, target: supportEl });
3577
- * mount({ widgetId: 'sales', publicKey: KEY_B, target: salesEl });
3596
+ * mount({ widgetId: 'support', publicKey: KEY_A, aiAgentDeploymentId: DEPLOYMENT_A, target: supportEl });
3597
+ * mount({ widgetId: 'sales', publicKey: KEY_B, aiAgentDeploymentId: DEPLOYMENT_B, target: salesEl });
3578
3598
  * ```
3579
3599
  */
3580
3600
  declare function mount(opts: ChatWidgetOptions & {
3601
+ aiAgentDeploymentId: string;
3581
3602
  target?: HTMLElement;
3582
3603
  }): ChatWidgetInstance;
3583
3604
  /**
@@ -3586,6 +3607,7 @@ declare function mount(opts: ChatWidgetOptions & {
3586
3607
  * behaves like {@link mount}. Safe to call on every route change in an SPA.
3587
3608
  */
3588
3609
  declare function init(opts: ChatWidgetOptions & {
3610
+ aiAgentDeploymentId: string;
3589
3611
  target?: HTMLElement;
3590
3612
  }): ChatWidgetInstance;
3591
3613
  /**