@runtypelabs/persona 4.15.0 → 4.16.0

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 (86) hide show
  1. package/dist/codegen.cjs +1 -1
  2. package/dist/codegen.js +1 -1
  3. package/dist/context-mentions.d.cts +283 -9
  4. package/dist/context-mentions.d.ts +283 -9
  5. package/dist/index.cjs +68 -68
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +299 -10
  8. package/dist/index.d.ts +299 -10
  9. package/dist/index.global.js +57 -57
  10. package/dist/index.global.js.map +1 -1
  11. package/dist/index.js +69 -69
  12. package/dist/index.js.map +1 -1
  13. package/dist/launcher.global.js +2 -2
  14. package/dist/launcher.global.js.map +1 -1
  15. package/dist/smart-dom-reader.d.cts +283 -9
  16. package/dist/smart-dom-reader.d.ts +283 -9
  17. package/dist/testing.cjs +3 -3
  18. package/dist/testing.d.cts +7 -0
  19. package/dist/testing.d.ts +7 -0
  20. package/dist/testing.js +3 -3
  21. package/dist/theme-editor-preview.cjs +64 -64
  22. package/dist/theme-editor-preview.d.cts +283 -9
  23. package/dist/theme-editor-preview.d.ts +283 -9
  24. package/dist/theme-editor-preview.js +56 -56
  25. package/dist/theme-editor.cjs +10 -10
  26. package/dist/theme-editor.d.cts +283 -10
  27. package/dist/theme-editor.d.ts +283 -10
  28. package/dist/theme-editor.js +10 -10
  29. package/dist/theme-reference.cjs +1 -1
  30. package/dist/theme-reference.d.cts +66 -3
  31. package/dist/theme-reference.d.ts +66 -3
  32. package/dist/theme-reference.js +1 -1
  33. package/dist/widget.css +1 -1
  34. package/package.json +1 -1
  35. package/src/components/artifact-pane.test.ts +27 -0
  36. package/src/components/artifact-pane.ts +7 -3
  37. package/src/components/header-builder.ts +27 -2
  38. package/src/components/header-layouts.test.ts +56 -0
  39. package/src/components/header-layouts.ts +29 -9
  40. package/src/components/launcher-surface.test.ts +403 -0
  41. package/src/components/launcher.ts +297 -2
  42. package/src/components/panel.ts +69 -74
  43. package/src/components/suggestions.test.ts +40 -0
  44. package/src/components/suggestions.ts +213 -153
  45. package/src/components/welcome.test.ts +121 -0
  46. package/src/components/welcome.ts +305 -0
  47. package/src/components/widget-view.test.ts +5 -3
  48. package/src/components/widget-view.ts +14 -7
  49. package/src/defaults.ts +2 -2
  50. package/src/index-core.ts +12 -1
  51. package/src/launcher-global.ts +10 -7
  52. package/src/plugins/types.ts +66 -1
  53. package/src/styles/widget-styles.test.ts +220 -0
  54. package/src/styles/widget.css +353 -9
  55. package/src/testing/mock-stream.test.ts +19 -0
  56. package/src/testing/mock-stream.ts +20 -0
  57. package/src/theme-editor/sections.ts +30 -1
  58. package/src/theme-reference.ts +26 -4
  59. package/src/types/theme.ts +40 -3
  60. package/src/types.ts +164 -6
  61. package/src/ui.body-top-slot.test.ts +95 -0
  62. package/src/ui.content-width.test.ts +91 -0
  63. package/src/ui.docked.test.ts +7 -4
  64. package/src/ui.launcher-teaser.test.ts +162 -0
  65. package/src/ui.rebuild-composer.test.ts +491 -0
  66. package/src/ui.render-welcome.test.ts +505 -0
  67. package/src/ui.scroll-additive.test.ts +91 -21
  68. package/src/ui.scroll.test.ts +302 -14
  69. package/src/ui.suggest-replies.test.ts +46 -0
  70. package/src/ui.ts +747 -136
  71. package/src/ui.welcome.test.ts +504 -0
  72. package/src/utils/artifact-gate.test.ts +27 -0
  73. package/src/utils/artifact-gate.ts +9 -0
  74. package/src/utils/attachment-manager.test.ts +37 -0
  75. package/src/utils/attachment-manager.ts +15 -0
  76. package/src/utils/auto-follow.test.ts +23 -0
  77. package/src/utils/auto-follow.ts +11 -1
  78. package/src/utils/config-merge.ts +2 -0
  79. package/src/utils/content-width.test.ts +37 -0
  80. package/src/utils/content-width.ts +17 -0
  81. package/src/utils/plugin-storage.test.ts +94 -0
  82. package/src/utils/plugin-storage.ts +98 -0
  83. package/src/utils/theme.test.ts +137 -0
  84. package/src/utils/tokens.ts +49 -3
  85. package/src/welcome.test.ts +213 -0
  86. package/src/welcome.ts +130 -0
package/dist/index.d.ts CHANGED
@@ -2,6 +2,37 @@ import { IconNode } from 'lucide';
2
2
  import { Marked } from 'marked';
3
3
  import DOMPurify from 'dompurify';
4
4
 
5
+ interface ResolvedWelcomeConfig {
6
+ title: string;
7
+ subtitle: string;
8
+ icon?: AgentWidgetWelcomeIcon;
9
+ variant: AgentWidgetWelcomeVariant;
10
+ dismiss: AgentWidgetWelcomeDismiss;
11
+ /** Undefined under `variant: "hero"`, which suppresses the greeting. */
12
+ message?: string;
13
+ }
14
+ /**
15
+ * Per-field, presence-based precedence: `welcome.*` wins, else the legacy
16
+ * `copy` alias, else the default above.
17
+ */
18
+ declare const resolveWelcomeConfig: (config?: AgentWidgetConfig) => ResolvedWelcomeConfig;
19
+ /**
20
+ * Derived visibility, never stored. "User activity" is the same predicate the
21
+ * starters use: the session contains at least one `role: "user"` message.
22
+ */
23
+ declare const isWelcomeVisible: (resolved: ResolvedWelcomeConfig, messages: readonly AgentWidgetMessage[] | undefined) => boolean;
24
+
25
+ /**
26
+ * Synchronous key-value store handed to plugin render hooks. Backed by
27
+ * `localStorage`, namespaced per plugin id. The async `storageAdapter` cannot
28
+ * back a synchronous API and `persistState` is not a general key-value surface.
29
+ */
30
+ interface AgentWidgetPluginStorage {
31
+ get: (key: string) => string | null;
32
+ set: (key: string, value: string) => void;
33
+ remove: (key: string) => void;
34
+ }
35
+
5
36
  type AgentWidgetTransformSuggestionsContext = {
6
37
  /**
7
38
  * Fresh copy of the suggestions entering this plugin, already normalized:
@@ -29,6 +60,27 @@ type AgentWidgetRenderSuggestionContext = {
29
60
  */
30
61
  select: () => void;
31
62
  };
63
+ type AgentWidgetRenderWelcomeContext = {
64
+ /** Alias-resolved welcome config; never the raw `copy.welcome*` shape. */
65
+ config: ResolvedWelcomeConfig;
66
+ variant: AgentWidgetWelcomeVariant;
67
+ /** Derived visibility for this render; governs the default renderer only. */
68
+ visible: boolean;
69
+ /** The core-owned welcome card, live-updated by `controller.update()`. */
70
+ defaultRenderer: () => HTMLElement;
71
+ sendMessage: (text: string) => void;
72
+ /** Re-run welcome arbitration: cleanups run, previous content is removed. */
73
+ requestRender: () => void;
74
+ /**
75
+ * Persona's starter renderer, wired through the full select pipeline:
76
+ * `onSuggestionSelect`, cancelable `persona:suggestion:*` events, send/fill.
77
+ */
78
+ renderStarter: (suggestion: AgentWidgetSuggestion) => HTMLElement;
79
+ /** Sync store namespaced by `persistState.keyPrefix` plus the plugin id. */
80
+ storage: AgentWidgetPluginStorage;
81
+ /** Teardown for this render; runs before the next one and on destroy. */
82
+ onCleanup: (fn: () => void) => void;
83
+ };
32
84
  type AgentWidgetSuggestionSelectContext = {
33
85
  suggestion: AgentWidgetResolvedSuggestion;
34
86
  surface: AgentWidgetSuggestionSurface;
@@ -85,6 +137,34 @@ interface AgentWidgetPlugin {
85
137
  defaultRenderer: () => HTMLElement;
86
138
  onToggle: () => void;
87
139
  }) => HTMLElement | null;
140
+ /**
141
+ * Custom renderer for the welcome surface (card, hero, greeting stack).
142
+ * First plugin returning an element wins; null falls through to the default,
143
+ * same contract as `renderSuggestion`.
144
+ *
145
+ * The core owns the welcome host: it stays mounted for the panel's lifetime
146
+ * and content is swapped inside it. A plugin element renders regardless of
147
+ * `ctx.visible` (derived visibility governs the default renderer only) and
148
+ * the host overlays the transcript while that element is active, so a home
149
+ * screen can return over an existing conversation. Return null again to
150
+ * clear the overlay.
151
+ *
152
+ * The ctx carries no controller: plugins are host-instantiated, so close a
153
+ * factory over the init handle (`plugin.attach(controller)`).
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * renderWelcome: ({ config, renderStarter, requestRender, onCleanup }) => {
158
+ * const root = document.createElement("div");
159
+ * root.textContent = config.title;
160
+ * root.appendChild(renderStarter({ label: "Track my order" }));
161
+ * const timer = setInterval(requestRender, 60_000);
162
+ * onCleanup(() => clearInterval(timer));
163
+ * return root;
164
+ * }
165
+ * ```
166
+ */
167
+ renderWelcome?: (context: AgentWidgetRenderWelcomeContext) => HTMLElement | null;
88
168
  /**
89
169
  * Custom renderer for panel header
90
170
  * Return null to use default renderer
@@ -129,6 +209,15 @@ interface AgentWidgetPlugin {
129
209
  * Omitted when `config.voiceRecognition.enabled` is not true.
130
210
  */
131
211
  onVoiceToggle?: () => void;
212
+ /**
213
+ * Re-run composer arbitration and swap the footer in place. The hook runs
214
+ * once at panel construction, so this is how a composer plugin unlocks
215
+ * (returns null) or re-renders later. Pending attachments, the mention
216
+ * affordances, and the composer listener registry are re-wired by the core.
217
+ */
218
+ requestRender: () => void;
219
+ /** Same sync store as the `renderWelcome` ctx, namespaced per plugin id. */
220
+ storage: AgentWidgetPluginStorage;
132
221
  }) => HTMLElement | null;
133
222
  /**
134
223
  * Custom renderer for reasoning bubbles
@@ -509,6 +598,15 @@ interface PanelTokens extends ComponentTokenSet {
509
598
  /** Background of the region revealed behind a detached panel. */
510
599
  canvasBackground?: string;
511
600
  }
601
+ /** Per-element text styling shared by themable text surfaces. */
602
+ interface TextStyleTokens {
603
+ fontFamily?: string;
604
+ fontSize?: string;
605
+ fontWeight?: string;
606
+ lineHeight?: string;
607
+ letterSpacing?: string;
608
+ color?: TokenReference<'color'>;
609
+ }
512
610
  interface HeaderTokens extends ComponentTokenSet {
513
611
  background: TokenReference<'color'>;
514
612
  border: TokenReference<'color'>;
@@ -517,10 +615,14 @@ interface HeaderTokens extends ComponentTokenSet {
517
615
  iconBackground: TokenReference<'color'>;
518
616
  /** Foreground (glyph stroke or emoji text) on the header avatar tile. */
519
617
  iconForeground: TokenReference<'color'>;
520
- /** Header title line (next to the icon, or minimal layout title). */
618
+ /** Legacy alias of `title.color`; `title.color` wins when both are set. */
521
619
  titleForeground: TokenReference<'color'>;
522
- /** Header subtitle line under the title. */
620
+ /** Legacy alias of `subtitle.color`; `subtitle.color` wins when both are set. */
523
621
  subtitleForeground: TokenReference<'color'>;
622
+ /** Header title typography (next to the icon, or minimal layout title). */
623
+ title?: TextStyleTokens;
624
+ /** Header subtitle typography, for the line under the title. */
625
+ subtitle?: TextStyleTokens;
524
626
  /** Default color for clear / close icon buttons when launcher overrides are unset. */
525
627
  actionIconForeground: TokenReference<'color'>;
526
628
  /** Box-shadow on the header (e.g., a fade shadow to replace the default border). */
@@ -550,7 +652,7 @@ interface MessageTokens {
550
652
  }
551
653
  /**
552
654
  * Welcome / intro card rendered above the message list when no messages exist.
553
- * Set `copy.showWelcomeCard: false` to hide it; use `layout.slots["body-top"]`
655
+ * Set `welcome.variant: "none"` to hide it; use `layout.slots["body-top"]`
554
656
  * to replace it wholesale.
555
657
  */
556
658
  interface IntroCardTokens extends ComponentTokenSet {
@@ -559,6 +661,12 @@ interface IntroCardTokens extends ComponentTokenSet {
559
661
  padding?: TokenReference<'spacing'>;
560
662
  /** Box-shadow on the intro card (token ref or raw CSS, e.g. `none`). */
561
663
  shadow?: string;
664
+ /** Full border shorthand on the intro card (raw CSS, e.g. `"1px solid rgba(0,0,0,0.1)"`). @default "none" */
665
+ border?: string;
666
+ /** Welcome title typography. */
667
+ title?: TextStyleTokens;
668
+ /** Welcome subtitle typography. */
669
+ subtitle?: TextStyleTokens;
562
670
  }
563
671
  /** Collapsible widget chrome (tool bubbles, reasoning bubbles, approval bubbles). */
564
672
  interface CollapsibleWidgetTokens {
@@ -601,6 +709,8 @@ interface MarkdownTokens {
601
709
  background?: TokenReference<'color'>;
602
710
  borderColor?: TokenReference<'color'>;
603
711
  textColor?: TokenReference<'color'>;
712
+ /** Corner radius; follows `palette.radius.md` by default so square-corner themes get square code blocks. */
713
+ borderRadius?: TokenReference<'radius'>;
604
714
  };
605
715
  /** Table styling. */
606
716
  table?: {
@@ -658,10 +768,19 @@ interface ToolBubbleTokens {
658
768
  interface ReasoningBubbleTokens {
659
769
  shadow: string;
660
770
  }
771
+ /** Scrollbar appearance shared by every scroller in the widget. */
772
+ interface ScrollbarTokens {
773
+ /** Thumb color. @default semantic.colors.border */
774
+ thumb?: TokenReference<'color'>;
775
+ /** Track color. @default "transparent" */
776
+ track?: TokenReference<'color'>;
777
+ }
661
778
  /** Composer (message input) chrome. */
662
779
  interface ComposerChromeTokens {
663
780
  /** Box-shadow on the composer form (raw CSS, e.g. `none`). */
664
781
  shadow: string;
782
+ /** Border color of the composer form. @default semantic.colors.border */
783
+ borderColor?: TokenReference<'color'>;
665
784
  /** Inner padding of the composer form (raw CSS shorthand). @default "0.75rem 1rem" */
666
785
  padding?: string;
667
786
  /** Gap between the textarea row and the actions row. @default "0.5rem" */
@@ -821,7 +940,10 @@ interface ScrollToBottomTokens extends ComponentTokenSet {
821
940
  }
822
941
  /** Visual tokens shared by one suggestion presentation variant. */
823
942
  interface SuggestionVariantTokens extends ComponentTokenSet {
943
+ /** Space inside one item, between its icon and its copy. */
824
944
  gap?: string;
945
+ /** Space between suggestion items in the container. */
946
+ itemGap?: string;
825
947
  minHeight?: string;
826
948
  fontSize?: string;
827
949
  lineHeight?: string;
@@ -863,6 +985,8 @@ interface ComponentTokens {
863
985
  toolBubble: ToolBubbleTokens;
864
986
  reasoningBubble: ReasoningBubbleTokens;
865
987
  composer: ComposerChromeTokens;
988
+ /** Scrollbar appearance for every scroller in the widget. */
989
+ scrollbar?: ScrollbarTokens;
866
990
  /** Icon button styling tokens. */
867
991
  iconButton?: IconButtonTokens;
868
992
  /** Label button styling tokens. */
@@ -2783,6 +2907,13 @@ type AgentWidgetArtifactsLayoutConfig = {
2783
2907
  * @default 520
2784
2908
  */
2785
2909
  narrowHostMaxWidth?: number;
2910
+ /**
2911
+ * Width of the slide-over artifact drawer (the narrow-host and mobile
2912
+ * presentations; `paneWidth`/`paneMaxWidth` only size the desktop split).
2913
+ * CSS length; `"100%"` makes the drawer cover the whole panel.
2914
+ * @default min(calc(100% - 1rem), 22rem)
2915
+ */
2916
+ drawerWidth?: string;
2786
2917
  /**
2787
2918
  * When true (default), widen the launcher panel while artifacts are visible and not user-dismissed.
2788
2919
  * No-op for inline embed (`launcher.enabled === false`).
@@ -3411,6 +3542,18 @@ type AgentWidgetScrollMode = "follow" | "anchor-top" | "none";
3411
3542
  * restored thread opens at a readable place rather than at the very bottom.
3412
3543
  */
3413
3544
  type AgentWidgetScrollRestorePosition = "bottom" | "last-user-turn";
3545
+ /**
3546
+ * Scrollbar visibility policy for every scroll surface in the widget.
3547
+ *
3548
+ * - `"on-scroll"` hides bars at rest and reveals them on genuine reader
3549
+ * input, keeping them visible while the reader is away from the resting
3550
+ * position: overlay-scrollbar semantics on every platform.
3551
+ * - `"auto"` keeps the themed bar under native visibility semantics: overlay
3552
+ * platforms still auto-hide, classic-scrollbar platforms (Windows,
3553
+ * always-show macOS) show it persistently.
3554
+ * - `"hidden"` never shows an indicator. Scrolling itself is unaffected.
3555
+ */
3556
+ type AgentWidgetScrollbarPolicy = "on-scroll" | "auto" | "hidden";
3414
3557
  type AgentWidgetScrollBehaviorFeature = {
3415
3558
  /** Scroll behavior during streamed responses. @default "anchor-top" */
3416
3559
  mode?: AgentWidgetScrollMode;
@@ -3455,6 +3598,13 @@ type AgentWidgetScrollBehaviorFeature = {
3455
3598
  * @default false
3456
3599
  */
3457
3600
  announce?: boolean;
3601
+ /**
3602
+ * Scrollbar visibility policy, applied to the transcript and every inner
3603
+ * scroller through one root attribute. Themable via
3604
+ * `--persona-scrollbar-thumb` and `--persona-scrollbar-track`.
3605
+ * @default "on-scroll"
3606
+ */
3607
+ scrollbar?: AgentWidgetScrollbarPolicy;
3458
3608
  };
3459
3609
  type AgentWidgetScrollToBottomFeature = {
3460
3610
  /**
@@ -4360,6 +4510,57 @@ type AgentWidgetLauncherConfig = {
4360
4510
  * @example "min(380px, calc(100vw - 48px))"
4361
4511
  */
4362
4512
  collapsedMaxWidth?: string;
4513
+ /**
4514
+ * Proactive nudge bubble anchored above the collapsed floating launcher.
4515
+ * Omit it (the default) and no teaser renders.
4516
+ */
4517
+ teaser?: AgentWidgetLauncherTeaserConfig;
4518
+ };
4519
+ /**
4520
+ * Launcher teaser: a small bubble above the collapsed launcher. Clicking it
4521
+ * opens the panel and consumes the teaser exactly like an explicit dismissal.
4522
+ * Within a single page load the teaser appears at most once under either
4523
+ * frequency.
4524
+ *
4525
+ * @example
4526
+ * ```typescript
4527
+ * launcher: {
4528
+ * teaser: { text: "Need a hand picking a plan?", delayMs: 3000 }
4529
+ * }
4530
+ * ```
4531
+ */
4532
+ type AgentWidgetLauncherTeaserConfig = {
4533
+ /** Bubble copy. An empty string renders no teaser. */
4534
+ text: string;
4535
+ /**
4536
+ * Delay before the bubble appears, in milliseconds.
4537
+ * @default 0
4538
+ */
4539
+ delayMs?: number;
4540
+ /**
4541
+ * How often the teaser may return.
4542
+ *
4543
+ * `"once"`: a dismissal or a click-through is remembered in `localStorage`
4544
+ * under `` `${persistState.keyPrefix ?? "persona-"}teaser-dismissed` `` and
4545
+ * the teaser never returns on that browser. `"always"`: shows on every page
4546
+ * load, tracked in memory only. `persistState: false` downgrades `"once"` to
4547
+ * in-memory too, so the teaser reappears each load.
4548
+ *
4549
+ * Custom `storageAdapter` implementations do not participate in teaser state.
4550
+ *
4551
+ * @default "once"
4552
+ */
4553
+ frequency?: "once" | "always";
4554
+ /**
4555
+ * Render an x affordance that dismisses the teaser without opening the panel.
4556
+ * @default true
4557
+ */
4558
+ dismissible?: boolean;
4559
+ /**
4560
+ * Accessible label for the dismiss affordance.
4561
+ * @default "Dismiss message"
4562
+ */
4563
+ dismissLabel?: string;
4363
4564
  };
4364
4565
  type AgentWidgetSendButtonConfig = {
4365
4566
  borderWidth?: string;
@@ -5148,7 +5349,10 @@ type AgentWidgetSuggestion = string | {
5148
5349
  label: string;
5149
5350
  /** Text placed in the composer or sent. Defaults to `label`. */
5150
5351
  prompt?: string;
5151
- /** Optional supporting copy, most useful with the `card` variant. */
5352
+ /**
5353
+ * Optional supporting copy, most useful with the `card` variant. The
5354
+ * `chip` variant ignores it and renders the label alone.
5355
+ */
5152
5356
  description?: string;
5153
5357
  /** Optional icon from Persona's bundled Lucide registry. */
5154
5358
  icon?: IconName;
@@ -5192,9 +5396,10 @@ type AgentWidgetSuggestionSurfaceConfig = {
5192
5396
  /** Default click behavior, overridable per item. Defaults to `send`. */
5193
5397
  behavior?: AgentWidgetSuggestionBehavior;
5194
5398
  /**
5195
- * Layout for items past the surface width. Defaults to `wrap` for starters
5196
- * and `scroll` for follow-ups. Applies to the `chip` variant only; the
5197
- * `card` and `list` layouts manage their own stacking.
5399
+ * Layout for items past the surface width. Defaults to `wrap` on every
5400
+ * surface; `scroll` opts into a horizontal strip for large sets. Applies
5401
+ * to the `chip` variant only; the `card` and `list` layouts manage their
5402
+ * own stacking.
5198
5403
  */
5199
5404
  overflow?: "scroll" | "wrap";
5200
5405
  /** Maximum visible items. Defaults to 4. */
@@ -5243,6 +5448,70 @@ type AgentWidgetSuggestionsConfig = {
5243
5448
  starters?: AgentWidgetStarterSuggestionsConfig;
5244
5449
  followUps?: AgentWidgetFollowUpSuggestionsConfig;
5245
5450
  };
5451
+ /**
5452
+ * Which welcome surface renders.
5453
+ * `"card"` is the top-of-scroll intro card (default, back-compatible),
5454
+ * `"hero"` centers it in the empty conversation, `"none"` renders no surface.
5455
+ */
5456
+ type AgentWidgetWelcomeVariant = "card" | "hero" | "none";
5457
+ /**
5458
+ * When the welcome surface goes away. `"never"` is the default for `"card"`;
5459
+ * `"on-first-message"` is the default for `"hero"` and cannot be overridden
5460
+ * there.
5461
+ */
5462
+ type AgentWidgetWelcomeDismiss = "never" | "on-first-message";
5463
+ /**
5464
+ * Avatar or logo shown above the welcome title. Discriminated union; the
5465
+ * function form is the escape hatch for custom markup. There is deliberately
5466
+ * no raw HTML string variant (sanitization surface plus accessibility hole).
5467
+ */
5468
+ type AgentWidgetWelcomeIcon = {
5469
+ type: "lucide";
5470
+ name: IconName;
5471
+ }
5472
+ /** `alt` is required, and may be `""` for a decorative logo. */
5473
+ | {
5474
+ type: "image";
5475
+ url: string;
5476
+ alt: string;
5477
+ }
5478
+ /** Emoji or short text glyph. */
5479
+ | {
5480
+ type: "text";
5481
+ text: string;
5482
+ } | (() => HTMLElement | SVGElement);
5483
+ /**
5484
+ * First-open welcome surface. Consolidates the deprecated
5485
+ * `copy.welcomeTitle` / `copy.welcomeSubtitle` / `copy.showWelcomeCard`
5486
+ * options; a field present here wins over its legacy alias.
5487
+ *
5488
+ * All defaults live in the resolver (`resolveWelcomeConfig`), never in
5489
+ * `DEFAULT_WIDGET_CONFIG`: presence on this object is what distinguishes a
5490
+ * host-set value from a filled-in default.
5491
+ */
5492
+ interface AgentWidgetWelcomeConfig {
5493
+ /** Card or hero title. Defaults to "Hello 👋". */
5494
+ title?: string;
5495
+ /** Scope statement in the assistant's voice. Empty string omits it. */
5496
+ subtitle?: string;
5497
+ /** Avatar or logo shown above the title. */
5498
+ icon?: AgentWidgetWelcomeIcon;
5499
+ /** @default "card" */
5500
+ variant?: AgentWidgetWelcomeVariant;
5501
+ /** @default "never" for `card`, always `"on-first-message"` for `hero`. */
5502
+ dismiss?: AgentWidgetWelcomeDismiss;
5503
+ /**
5504
+ * Display-only greeting bubble pinned at transcript position zero. It is UI
5505
+ * chrome derived from config, never a session message: it does not appear in
5506
+ * `getMessages()`, is never persisted or sent to the model, `onMessage` does
5507
+ * not fire for it, and it survives `clearChat()`. Use an assistant
5508
+ * `initialMessages` entry instead when the model should see the greeting.
5509
+ *
5510
+ * Ignored (with a debug-mode warning) when `variant` is `"hero"`: the hero
5511
+ * is the greeting.
5512
+ */
5513
+ message?: string;
5514
+ }
5246
5515
  /**
5247
5516
  * Interface for pluggable stream parsers that extract text from streaming responses.
5248
5517
  * Parsers handle incremental parsing to extract text values from structured formats (JSON, XML, etc.).
@@ -5489,7 +5758,9 @@ type AgentWidgetHeaderLayoutConfig = {
5489
5758
  */
5490
5759
  render?: (context: HeaderRenderContext) => HTMLElement;
5491
5760
  /**
5492
- * Shown after the title in `minimal` header layout (e.g. chevron menu affordance).
5761
+ * Icon action buttons at the trailing edge of the `minimal` header layout,
5762
+ * clustered with the close button and sharing its chrome. For a menu
5763
+ * affordance next to the title, use `titleMenu` instead.
5493
5764
  */
5494
5765
  trailingActions?: AgentWidgetHeaderTrailingAction[];
5495
5766
  /** Called when a `trailingActions` button is clicked. */
@@ -5669,7 +5940,11 @@ type AgentWidgetLayoutConfig = {
5669
5940
  /**
5670
5941
  * Max width for the content area (messages + composer).
5671
5942
  * Applied with `margin: 0 auto` for centering.
5672
- * Accepts any CSS width value (e.g. "90ch", "720px", "80%").
5943
+ * Accepts any CSS width value (e.g. "90ch", "720px", "80%"), or "none"
5944
+ * for a full-width column. Only engages on panels wider than the cap,
5945
+ * so launcher-width panels are unaffected.
5946
+ * @default "768px" ("720px" in composer-bar mode via
5947
+ * `launcher.composerBar.contentMaxWidth`)
5673
5948
  */
5674
5949
  contentMaxWidth?: string;
5675
5950
  };
@@ -6417,7 +6692,9 @@ type AgentWidgetConfig = {
6417
6692
  */
6418
6693
  getHeaders?: AgentWidgetHeadersFunction;
6419
6694
  copy?: {
6695
+ /** @deprecated Use `welcome.title`. */
6420
6696
  welcomeTitle?: string;
6697
+ /** @deprecated Use `welcome.subtitle`. */
6421
6698
  welcomeSubtitle?: string;
6422
6699
  inputPlaceholder?: string;
6423
6700
  sendButtonLabel?: string;
@@ -6425,6 +6702,7 @@ type AgentWidgetConfig = {
6425
6702
  stopButtonLabel?: string;
6426
6703
  /**
6427
6704
  * When false, the welcome / intro card is not shown above the message list.
6705
+ * @deprecated Use `welcome.variant: "none"`.
6428
6706
  * @default true
6429
6707
  */
6430
6708
  showWelcomeCard?: boolean;
@@ -6491,6 +6769,12 @@ type AgentWidgetConfig = {
6491
6769
  initialSelectedArtifactId?: string | null;
6492
6770
  /** Rich starter and follow-up suggestion surfaces. */
6493
6771
  suggestions?: AgentWidgetSuggestionsConfig;
6772
+ /**
6773
+ * First-open welcome surface (card, hero, or none) plus the optional
6774
+ * display-only greeting bubble. Supersedes `copy.welcomeTitle`,
6775
+ * `copy.welcomeSubtitle`, and `copy.showWelcomeCard`.
6776
+ */
6777
+ welcome?: AgentWidgetWelcomeConfig;
6494
6778
  /** @deprecated Prefer `suggestions.starters.items`. */
6495
6779
  suggestionChips?: string[];
6496
6780
  /** @deprecated Prefer semantic tokens under `theme.components.suggestion`. */
@@ -9694,6 +9978,11 @@ declare class AttachmentManager {
9694
9978
  * Set the previews container element
9695
9979
  */
9696
9980
  setPreviewsContainer(container: HTMLElement | null): void;
9981
+ /**
9982
+ * Re-point previews at a new container and repaint from state. A composer
9983
+ * rebuild swaps the footer, so pending attachments must follow it.
9984
+ */
9985
+ remountPreviews(container: HTMLElement | null): void;
9697
9986
  /**
9698
9987
  * Update the configuration (e.g., when allowed types change)
9699
9988
  */
@@ -10793,4 +11082,4 @@ interface RovingTablistController {
10793
11082
  }
10794
11083
  declare function createRovingTablist(container: HTMLElement, options: RovingTablistOptions): RovingTablistController;
10795
11084
 
10796
- export { ASK_USER_QUESTION_CLIENT_TOOL, ASK_USER_QUESTION_PARAMETERS_SCHEMA, ASK_USER_QUESTION_TOOL_NAME, type AgentConfig, type AgentExecutionState, type AgentLoopConfig, type AgentMessageMetadata, type AgentRequestOptions, type AgentToolsConfig, type AgentWidgetActionContext, type AgentWidgetActionEventPayload, type AgentWidgetActionHandler, type AgentWidgetActionHandlerResult, type AgentWidgetActionParser, type AgentWidgetAgentRequestPayload, type AgentWidgetApproval, type AgentWidgetApprovalConfig, type AgentWidgetApprovalDecisionOptions, type AgentWidgetArtifactsFeature, type AgentWidgetArtifactsLayoutConfig, type AgentWidgetAskUserQuestionFeature, type AgentWidgetAskUserQuestionStyles, type AgentWidgetAttachmentsConfig, type AgentWidgetAvatarConfig, AgentWidgetClient, type AgentWidgetComponentRenderer, type AgentWidgetComposerConfig, type AgentWidgetConfig, type AgentWidgetConfigPatch, type AgentWidgetContextMentionChipRenderContext, type AgentWidgetContextMentionCommandContext, type AgentWidgetContextMentionComposerCapability, type AgentWidgetContextMentionConfig, type AgentWidgetContextMentionItem, type AgentWidgetContextMentionItemRenderContext, type AgentWidgetContextMentionMenuRenderContext, type AgentWidgetContextMentionPayload, type AgentWidgetContextMentionRef, type AgentWidgetContextMentionResolveContext, type AgentWidgetContextMentionSearchContext, type AgentWidgetContextMentionSource, type AgentWidgetContextMentionTokenRenderContext, type AgentWidgetContextProvider, type AgentWidgetContextProviderContext, type AgentWidgetController, type AgentWidgetControllerEventMap, type AgentWidgetCustomFetch, type AgentWidgetDockConfig, type AgentWidgetEvent, type AgentWidgetFeatureFlags, type AgentWidgetFollowUpSuggestionsConfig, type AgentWidgetHeaderLayoutConfig, type AgentWidgetHeadersFunction, type AgentWidgetInitHandle, type AgentWidgetInitOptions, type AgentWidgetLauncherConfig, type AgentWidgetLayoutConfig, type AgentWidgetLoadingIndicatorConfig, type AgentWidgetMarkdownConfig, type AgentWidgetMarkdownOptions, type AgentWidgetMarkdownRendererOverrides, type AgentWidgetMentionLlmEntry, type AgentWidgetMentionTriggerChannel, type AgentWidgetMentionTriggerPosition, type AgentWidgetMessage, type AgentWidgetMessageActionsConfig, type AgentWidgetMessageFeedback, type AgentWidgetMessageLayoutConfig, type AgentWidgetMessageRoleLayout, type AgentWidgetParsedAction, type AgentWidgetPlugin, type AgentWidgetReadAloudEvent, type AgentWidgetRenderSuggestionContext, type AgentWidgetRequestPayload, type AgentWidgetResolvedSuggestion, type AgentWidgetSSEEventParser, type AgentWidgetSSEEventResult, type AgentWidgetScrollBehaviorFeature, type AgentWidgetScrollMode, type AgentWidgetScrollRestorePosition, type AgentWidgetScrollToBottomFeature, AgentWidgetSession, type AgentWidgetSessionStatus, type AgentWidgetStarterSuggestionsConfig, type AgentWidgetStorageAdapter, type AgentWidgetStoredState, type AgentWidgetStreamAnimationBuffer, type AgentWidgetStreamAnimationBuiltinType, type AgentWidgetStreamAnimationFeature, type AgentWidgetStreamAnimationPlaceholder, type AgentWidgetStreamAnimationType, type AgentWidgetStreamParser, type AgentWidgetStreamParserResult, type AgentWidgetSuggestion, type AgentWidgetSuggestionBehavior, type AgentWidgetSuggestionChipsConfig, type AgentWidgetSuggestionSelectContext, type AgentWidgetSuggestionSource, type AgentWidgetSuggestionSurface, type AgentWidgetSuggestionSurfaceConfig, type AgentWidgetSuggestionVariant, type AgentWidgetSuggestionsConfig, type AgentWidgetTimestampConfig, type AgentWidgetTransformSuggestionsContext, type AgentWidgetVoiceStatusEvent, type AgentWidgetWebMcpConfig, type ArtifactConfigPayload, type ArtifactPaneTokens, type ArtifactTabTokens, type ArtifactToolbarTokens, type AskUserQuestionOption, type AskUserQuestionPayload, type AskUserQuestionPrompt, AttachmentManager, type AttachmentManagerConfig, type BorderScale, BrowserSpeechEngine, type BrowserSpeechEngineOptions, type CSATFeedbackOptions, type ClientChatRequest, type ClientFeedbackRequest, type ClientFeedbackType, type ClientInitResponse, type ClientSession, type ClientToolDefinition, type CodeFormat, type CodeGeneratorHooks, type CodeGeneratorOptions, type ColorPalette, type ColorShade, type ComboButtonHandle, type ComponentContext, type ComponentDirective, type ComponentRegistrationOptions, type ComponentRenderer, type ComponentTokens, type ComposerBuildContext, type ComposerElements, type ContentPart, type CreateComboButtonOptions, type CreateDropdownOptions, type CreateIconButtonOptions, type CreateLabelButtonOptions, type CreateStandardBubbleOptions, type CreateThemeOptions, type CreateToggleGroupOptions, DEFAULT_COMPONENTS, DEFAULT_FLOATING_LAUNCHER_MAX_WIDTH, DEFAULT_FLOATING_LAUNCHER_WIDTH, DEFAULT_PALETTE, DEFAULT_SEMANTIC, DEFAULT_WIDGET_CONFIG, type DeepPartial, type DemoCarouselHandle, type DemoCarouselItem, type DemoCarouselOptions, type DomContextMode, type DomContextOptions, type DropdownMenuHandle, type DropdownMenuItem, type EnrichedPageElement, type EventStreamBadgeColor, type EventStreamConfig, type EventStreamPayloadRenderContext, type EventStreamRowRenderContext, type EventStreamToolbarRenderContext, type EventStreamViewRenderContext, type FallbackSpeechEngineOptions, type FormatEnrichedContextOptions, type HeaderBuildContext, type HeaderElements, type HeaderLayoutContext, type HeaderLayoutRenderer, type HeaderRenderContext, type IconButtonTokens, type IconName, type IdleIndicatorRenderContext, type ImageContentPart, type InjectAssistantMessageOptions, type InjectComponentDirectiveOptions, type InjectMessageOptions, type InjectSystemMessageOptions, type InjectUserMessageOptions, type LabelButtonTokens, type LoadingIndicatorRenderContext, type LoadingIndicatorRenderer, type MarkdownParsersModule, type MarkdownProcessorOptions, type MessageActionCallbacks, type MessageContent, type MessageRenderContext, type MessageTransform, type NPSFeedbackOptions, PRESETS, PRESET_FULLSCREEN, PRESET_MINIMAL, PRESET_SHOP, type ParseOptionsConfig, type ParseRule, type PcmStreamPlayer, type PendingAttachment, type PersonaArtifactActionContext, type PersonaArtifactCustomAction, type PersonaArtifactDisplayDescriptor, type PersonaArtifactDisplayMatch, type PersonaArtifactDisplayMode, type PersonaArtifactDisplayModeInput, type PersonaArtifactDisplayResolution, type PersonaArtifactDisplayRules, type PersonaArtifactFilesDisplayRules, type PersonaArtifactKind, type PersonaArtifactManualUpsert, type PersonaArtifactPresentation, type PersonaArtifactRecord, type PersonaArtifactStatusLabelContext, type PersonaTheme, type PersonaThemePlugin, type RadiusScale, ReadAloudController, type ReadAloudListener, type ReadAloudState, type ResolvedTarget, type RovingTablistController, type RovingTablistOptions, type RuleScoringContext, type RuntypeClientChatRequest, type RuntypeClientChatStreamEvent, type RuntypeClientFeedbackRequest, type RuntypeClientFeedbackResponse, type RuntypeClientFeedbackType, type RuntypeClientInitRequest, type RuntypeClientInitResponse, type RuntypeClientResumeRequest, type RuntypeClientResumeStreamEvent, type RuntypeExecutionStreamEvent, type RuntypeFlowSSEEvent, type RuntypeStepCompleteEvent, type RuntypeStopReasonKind, type RuntypeStreamEventOf, type RuntypeTurnCompleteEvent, type SSEEventCallback, type SSEEventRecord, SUGGEST_REPLIES_CLIENT_TOOL, SUGGEST_REPLIES_PARAMETERS_SCHEMA, SUGGEST_REPLIES_TOOL_NAME, type SanitizeFunction, type SemanticColors, type SemanticSpacing, type SemanticTypography, type ShadowScale, type SlashCommandDefinition, type SlotRenderContext, type SlotRenderer, type SpacingScale, type SpeechCallbacks, type SpeechEngine, type SpeechRequest, type StreamAnimationContext, type StreamAnimationPlugin, THEME_ZONES, type TargetResolver, type TextContentPart, type ThemeValidationError, type ThemeValidationResult, type ThemeZone, type ToggleGroupHandle, type ToggleGroupItem, type ToggleGroupTokens, type TokenReference, type TypographyScale, VERSION, type VoiceConfig, type VoiceMetrics, type VoicePlaybackEngine, type VoiceProvider, type VoiceResult, type VoiceStatus, WEBMCP_TOOL_PREFIX, WebMcpBridge, type WebMcpConfirmHandler, type WebMcpConfirmInfo, type WebMcpToolResult, type WidgetArtifactLayoutPreference, type WidgetHostLayout, type WidgetHostLayoutMode, type WidgetLayoutSlot, type WidgetPreferenceCapabilities, type WidgetPreferenceParseIssue, type WidgetPreferenceParseIssueCode, type WidgetPreferenceParseResult, type WidgetPreferenceSlice, type WidgetPreset, accessibilityPlugin, animationsPlugin, applyFeaturePreferences, applyThemeVariables, attachHeaderToContainer, brandPlugin, buildComposer, buildDefaultHeader, buildHeader, buildHeaderWithLayout, buildMinimalHeader, builtInClientToolsForDispatch, canonicalArtifactDisplayMode, collectEnrichedPageContext, componentRegistry, createActionManager, createAgentExperience, createAskUserQuestionBubble, createBestAvailableVoiceProvider, createBubbleWithLayout, createCSATFeedback, createComboButton, createComponentMiddleware, createComponentStreamParser, createDefaultSanitizer, createDemoCarousel, createDirectivePostprocessor, createDropdownMenu, createFlexibleJsonStreamParser, createIconButton, createImagePart, createJsonStreamParser, createLabelButton, createLocalStorageAdapter, createMarkdownProcessor, createMarkdownProcessorFromConfig, createMessageActions, createNPSFeedback, createPlainTextParser, createPlugin, createRegexJsonParser, createRovingTablist, createSlashCommandsSource, createStandardBubble, createStaticMentionSource, createTextPart, createTheme, createThemeObserver, createToggleGroup, createTypingIndicator, createVoiceProvider, createWidgetHostLayout, createXmlParser, initAgentWidget as default, defaultActionHandlers, defaultJsonActionParser, defaultMentionFilter, defaultParseRules, detectColorScheme, directivePostprocessor, ensureAskUserQuestionSheet, escapeHtml, extractComponentDirectiveFromMessage, fileToImagePart, formatEnrichedContext, generateAssistantMessageId, generateCodeSnippet, generateMessageId, generateStableSelector, generateUserMessageId, getActiveTheme, getColorScheme, getDisplayText, getHeaderLayout, getImageParts, getPreset, hasComponentDirective, hasImages, headerLayouts, highContrastPlugin, initAgentWidget, isAskUserQuestionMessage, isComponentDirectiveType, isDockedMountMode, isSuggestRepliesMessage, isVoiceSupported, isWebMcpToolName, latestAgentSuggestions, listRegisteredStreamAnimations, loadMarkdownParsers, markdownPostprocessor, mergeWithDefaults, normalizeContent, normalizeMediaType, onMarkdownParsersReady, parseAskUserQuestionPayload, parseSuggestRepliesPayload, parseWidgetPreferenceSlice, pickBestVoice, pluginRegistry, reducedMotionPlugin, registerStreamAnimationPlugin, removeAskUserQuestionSheet, renderComponentDirective, renderLoadingIndicatorWithFallback, renderLucideIcon, resolveArtifactDisplay, resolveArtifactDisplayMode, resolveConfigPreferences, resolveDockConfig, resolveSanitizer, resolveTokens, stripWebMcpPrefix, themeToCssVariables, unregisterStreamAnimationPlugin, validateImageFile, validateTheme };
11085
+ export { ASK_USER_QUESTION_CLIENT_TOOL, ASK_USER_QUESTION_PARAMETERS_SCHEMA, ASK_USER_QUESTION_TOOL_NAME, type AgentConfig, type AgentExecutionState, type AgentLoopConfig, type AgentMessageMetadata, type AgentRequestOptions, type AgentToolsConfig, type AgentWidgetActionContext, type AgentWidgetActionEventPayload, type AgentWidgetActionHandler, type AgentWidgetActionHandlerResult, type AgentWidgetActionParser, type AgentWidgetAgentRequestPayload, type AgentWidgetApproval, type AgentWidgetApprovalConfig, type AgentWidgetApprovalDecisionOptions, type AgentWidgetArtifactsFeature, type AgentWidgetArtifactsLayoutConfig, type AgentWidgetAskUserQuestionFeature, type AgentWidgetAskUserQuestionStyles, type AgentWidgetAttachmentsConfig, type AgentWidgetAvatarConfig, AgentWidgetClient, type AgentWidgetComponentRenderer, type AgentWidgetComposerConfig, type AgentWidgetConfig, type AgentWidgetConfigPatch, type AgentWidgetContextMentionChipRenderContext, type AgentWidgetContextMentionCommandContext, type AgentWidgetContextMentionComposerCapability, type AgentWidgetContextMentionConfig, type AgentWidgetContextMentionItem, type AgentWidgetContextMentionItemRenderContext, type AgentWidgetContextMentionMenuRenderContext, type AgentWidgetContextMentionPayload, type AgentWidgetContextMentionRef, type AgentWidgetContextMentionResolveContext, type AgentWidgetContextMentionSearchContext, type AgentWidgetContextMentionSource, type AgentWidgetContextMentionTokenRenderContext, type AgentWidgetContextProvider, type AgentWidgetContextProviderContext, type AgentWidgetController, type AgentWidgetControllerEventMap, type AgentWidgetCustomFetch, type AgentWidgetDockConfig, type AgentWidgetEvent, type AgentWidgetFeatureFlags, type AgentWidgetFollowUpSuggestionsConfig, type AgentWidgetHeaderLayoutConfig, type AgentWidgetHeadersFunction, type AgentWidgetInitHandle, type AgentWidgetInitOptions, type AgentWidgetLauncherConfig, type AgentWidgetLauncherTeaserConfig, type AgentWidgetLayoutConfig, type AgentWidgetLoadingIndicatorConfig, type AgentWidgetMarkdownConfig, type AgentWidgetMarkdownOptions, type AgentWidgetMarkdownRendererOverrides, type AgentWidgetMentionLlmEntry, type AgentWidgetMentionTriggerChannel, type AgentWidgetMentionTriggerPosition, type AgentWidgetMessage, type AgentWidgetMessageActionsConfig, type AgentWidgetMessageFeedback, type AgentWidgetMessageLayoutConfig, type AgentWidgetMessageRoleLayout, type AgentWidgetParsedAction, type AgentWidgetPlugin, type AgentWidgetPluginStorage, type AgentWidgetReadAloudEvent, type AgentWidgetRenderSuggestionContext, type AgentWidgetRenderWelcomeContext, type AgentWidgetRequestPayload, type AgentWidgetResolvedSuggestion, type AgentWidgetSSEEventParser, type AgentWidgetSSEEventResult, type AgentWidgetScrollBehaviorFeature, type AgentWidgetScrollMode, type AgentWidgetScrollRestorePosition, type AgentWidgetScrollToBottomFeature, AgentWidgetSession, type AgentWidgetSessionStatus, type AgentWidgetStarterSuggestionsConfig, type AgentWidgetStorageAdapter, type AgentWidgetStoredState, type AgentWidgetStreamAnimationBuffer, type AgentWidgetStreamAnimationBuiltinType, type AgentWidgetStreamAnimationFeature, type AgentWidgetStreamAnimationPlaceholder, type AgentWidgetStreamAnimationType, type AgentWidgetStreamParser, type AgentWidgetStreamParserResult, type AgentWidgetSuggestion, type AgentWidgetSuggestionBehavior, type AgentWidgetSuggestionChipsConfig, type AgentWidgetSuggestionSelectContext, type AgentWidgetSuggestionSource, type AgentWidgetSuggestionSurface, type AgentWidgetSuggestionSurfaceConfig, type AgentWidgetSuggestionVariant, type AgentWidgetSuggestionsConfig, type AgentWidgetTimestampConfig, type AgentWidgetTransformSuggestionsContext, type AgentWidgetVoiceStatusEvent, type AgentWidgetWebMcpConfig, type AgentWidgetWelcomeConfig, type AgentWidgetWelcomeDismiss, type AgentWidgetWelcomeIcon, type AgentWidgetWelcomeVariant, type ArtifactConfigPayload, type ArtifactPaneTokens, type ArtifactTabTokens, type ArtifactToolbarTokens, type AskUserQuestionOption, type AskUserQuestionPayload, type AskUserQuestionPrompt, AttachmentManager, type AttachmentManagerConfig, type BorderScale, BrowserSpeechEngine, type BrowserSpeechEngineOptions, type CSATFeedbackOptions, type ClientChatRequest, type ClientFeedbackRequest, type ClientFeedbackType, type ClientInitResponse, type ClientSession, type ClientToolDefinition, type CodeFormat, type CodeGeneratorHooks, type CodeGeneratorOptions, type ColorPalette, type ColorShade, type ComboButtonHandle, type ComponentContext, type ComponentDirective, type ComponentRegistrationOptions, type ComponentRenderer, type ComponentTokens, type ComposerBuildContext, type ComposerElements, type ContentPart, type CreateComboButtonOptions, type CreateDropdownOptions, type CreateIconButtonOptions, type CreateLabelButtonOptions, type CreateStandardBubbleOptions, type CreateThemeOptions, type CreateToggleGroupOptions, DEFAULT_COMPONENTS, DEFAULT_FLOATING_LAUNCHER_MAX_WIDTH, DEFAULT_FLOATING_LAUNCHER_WIDTH, DEFAULT_PALETTE, DEFAULT_SEMANTIC, DEFAULT_WIDGET_CONFIG, type DeepPartial, type DemoCarouselHandle, type DemoCarouselItem, type DemoCarouselOptions, type DomContextMode, type DomContextOptions, type DropdownMenuHandle, type DropdownMenuItem, type EnrichedPageElement, type EventStreamBadgeColor, type EventStreamConfig, type EventStreamPayloadRenderContext, type EventStreamRowRenderContext, type EventStreamToolbarRenderContext, type EventStreamViewRenderContext, type FallbackSpeechEngineOptions, type FormatEnrichedContextOptions, type HeaderBuildContext, type HeaderElements, type HeaderLayoutContext, type HeaderLayoutRenderer, type HeaderRenderContext, type IconButtonTokens, type IconName, type IdleIndicatorRenderContext, type ImageContentPart, type InjectAssistantMessageOptions, type InjectComponentDirectiveOptions, type InjectMessageOptions, type InjectSystemMessageOptions, type InjectUserMessageOptions, type LabelButtonTokens, type LoadingIndicatorRenderContext, type LoadingIndicatorRenderer, type MarkdownParsersModule, type MarkdownProcessorOptions, type MessageActionCallbacks, type MessageContent, type MessageRenderContext, type MessageTransform, type NPSFeedbackOptions, PRESETS, PRESET_FULLSCREEN, PRESET_MINIMAL, PRESET_SHOP, type ParseOptionsConfig, type ParseRule, type PcmStreamPlayer, type PendingAttachment, type PersonaArtifactActionContext, type PersonaArtifactCustomAction, type PersonaArtifactDisplayDescriptor, type PersonaArtifactDisplayMatch, type PersonaArtifactDisplayMode, type PersonaArtifactDisplayModeInput, type PersonaArtifactDisplayResolution, type PersonaArtifactDisplayRules, type PersonaArtifactFilesDisplayRules, type PersonaArtifactKind, type PersonaArtifactManualUpsert, type PersonaArtifactPresentation, type PersonaArtifactRecord, type PersonaArtifactStatusLabelContext, type PersonaTheme, type PersonaThemePlugin, type RadiusScale, ReadAloudController, type ReadAloudListener, type ReadAloudState, type ResolvedTarget, type ResolvedWelcomeConfig, type RovingTablistController, type RovingTablistOptions, type RuleScoringContext, type RuntypeClientChatRequest, type RuntypeClientChatStreamEvent, type RuntypeClientFeedbackRequest, type RuntypeClientFeedbackResponse, type RuntypeClientFeedbackType, type RuntypeClientInitRequest, type RuntypeClientInitResponse, type RuntypeClientResumeRequest, type RuntypeClientResumeStreamEvent, type RuntypeExecutionStreamEvent, type RuntypeFlowSSEEvent, type RuntypeStepCompleteEvent, type RuntypeStopReasonKind, type RuntypeStreamEventOf, type RuntypeTurnCompleteEvent, type SSEEventCallback, type SSEEventRecord, SUGGEST_REPLIES_CLIENT_TOOL, SUGGEST_REPLIES_PARAMETERS_SCHEMA, SUGGEST_REPLIES_TOOL_NAME, type SanitizeFunction, type SemanticColors, type SemanticSpacing, type SemanticTypography, type ShadowScale, type SlashCommandDefinition, type SlotRenderContext, type SlotRenderer, type SpacingScale, type SpeechCallbacks, type SpeechEngine, type SpeechRequest, type StreamAnimationContext, type StreamAnimationPlugin, THEME_ZONES, type TargetResolver, type TextContentPart, type TextStyleTokens, type ThemeValidationError, type ThemeValidationResult, type ThemeZone, type ToggleGroupHandle, type ToggleGroupItem, type ToggleGroupTokens, type TokenReference, type TypographyScale, VERSION, type VoiceConfig, type VoiceMetrics, type VoicePlaybackEngine, type VoiceProvider, type VoiceResult, type VoiceStatus, WEBMCP_TOOL_PREFIX, WebMcpBridge, type WebMcpConfirmHandler, type WebMcpConfirmInfo, type WebMcpToolResult, type WidgetArtifactLayoutPreference, type WidgetHostLayout, type WidgetHostLayoutMode, type WidgetLayoutSlot, type WidgetPreferenceCapabilities, type WidgetPreferenceParseIssue, type WidgetPreferenceParseIssueCode, type WidgetPreferenceParseResult, type WidgetPreferenceSlice, type WidgetPreset, accessibilityPlugin, animationsPlugin, applyFeaturePreferences, applyThemeVariables, attachHeaderToContainer, brandPlugin, buildComposer, buildDefaultHeader, buildHeader, buildHeaderWithLayout, buildMinimalHeader, builtInClientToolsForDispatch, canonicalArtifactDisplayMode, collectEnrichedPageContext, componentRegistry, createActionManager, createAgentExperience, createAskUserQuestionBubble, createBestAvailableVoiceProvider, createBubbleWithLayout, createCSATFeedback, createComboButton, createComponentMiddleware, createComponentStreamParser, createDefaultSanitizer, createDemoCarousel, createDirectivePostprocessor, createDropdownMenu, createFlexibleJsonStreamParser, createIconButton, createImagePart, createJsonStreamParser, createLabelButton, createLocalStorageAdapter, createMarkdownProcessor, createMarkdownProcessorFromConfig, createMessageActions, createNPSFeedback, createPlainTextParser, createPlugin, createRegexJsonParser, createRovingTablist, createSlashCommandsSource, createStandardBubble, createStaticMentionSource, createTextPart, createTheme, createThemeObserver, createToggleGroup, createTypingIndicator, createVoiceProvider, createWidgetHostLayout, createXmlParser, initAgentWidget as default, defaultActionHandlers, defaultJsonActionParser, defaultMentionFilter, defaultParseRules, detectColorScheme, directivePostprocessor, ensureAskUserQuestionSheet, escapeHtml, extractComponentDirectiveFromMessage, fileToImagePart, formatEnrichedContext, generateAssistantMessageId, generateCodeSnippet, generateMessageId, generateStableSelector, generateUserMessageId, getActiveTheme, getColorScheme, getDisplayText, getHeaderLayout, getImageParts, getPreset, hasComponentDirective, hasImages, headerLayouts, highContrastPlugin, initAgentWidget, isAskUserQuestionMessage, isComponentDirectiveType, isDockedMountMode, isSuggestRepliesMessage, isVoiceSupported, isWebMcpToolName, isWelcomeVisible, latestAgentSuggestions, listRegisteredStreamAnimations, loadMarkdownParsers, markdownPostprocessor, mergeWithDefaults, normalizeContent, normalizeMediaType, onMarkdownParsersReady, parseAskUserQuestionPayload, parseSuggestRepliesPayload, parseWidgetPreferenceSlice, pickBestVoice, pluginRegistry, reducedMotionPlugin, registerStreamAnimationPlugin, removeAskUserQuestionSheet, renderComponentDirective, renderLoadingIndicatorWithFallback, renderLucideIcon, resolveArtifactDisplay, resolveArtifactDisplayMode, resolveConfigPreferences, resolveDockConfig, resolveSanitizer, resolveTokens, resolveWelcomeConfig, stripWebMcpPrefix, themeToCssVariables, unregisterStreamAnimationPlugin, validateImageFile, validateTheme };