@runtypelabs/persona 4.23.2 → 4.25.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 (166) hide show
  1. package/dist/animations/glyph-cycle.d.cts +1 -1
  2. package/dist/animations/glyph-cycle.d.ts +1 -1
  3. package/dist/animations/{types-CI7OckWI.d.cts → types-Db61aI9J.d.cts} +2 -0
  4. package/dist/animations/{types-CI7OckWI.d.ts → types-Db61aI9J.d.ts} +2 -0
  5. package/dist/animations/wipe.d.cts +1 -1
  6. package/dist/animations/wipe.d.ts +1 -1
  7. package/dist/animations-extra.d.cts +2 -0
  8. package/dist/animations-extra.d.ts +2 -0
  9. package/dist/approval-ui-3NMYNXBD.js +1 -0
  10. package/dist/approval-ui.cjs +2 -2
  11. package/dist/approval-ui.d.cts +278 -37
  12. package/dist/approval-ui.d.ts +278 -37
  13. package/dist/approval-ui.js +2 -2
  14. package/dist/{artifacts-ui-F4N6VMKF.js → artifacts-ui-IGB5YKLO.js} +4 -4
  15. package/dist/artifacts-ui.d.cts +273 -25
  16. package/dist/artifacts-ui.d.ts +273 -25
  17. package/dist/{chunk-NIKYKSNZ.js → chunk-7CO4T5KB.js} +1 -1
  18. package/dist/codegen.cjs +11 -11
  19. package/dist/codegen.js +13 -13
  20. package/dist/context-mentions.d.cts +273 -25
  21. package/dist/context-mentions.d.ts +273 -25
  22. package/dist/event-stream-view.d.cts +273 -25
  23. package/dist/event-stream-view.d.ts +273 -25
  24. package/dist/forms-ui.d.cts +319 -27
  25. package/dist/forms-ui.d.ts +319 -27
  26. package/dist/history-view.d.cts +2 -0
  27. package/dist/history-view.d.ts +2 -0
  28. package/dist/index.cjs +70 -69
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +344 -39
  31. package/dist/index.d.ts +344 -39
  32. package/dist/index.global.js +57 -54
  33. package/dist/index.global.js.map +1 -1
  34. package/dist/index.js +70 -69
  35. package/dist/index.js.map +1 -1
  36. package/dist/install.global.js +1 -1
  37. package/dist/install.global.js.map +1 -1
  38. package/dist/launcher.global.js +2 -2
  39. package/dist/launcher.global.js.map +1 -1
  40. package/dist/session-reconnect.d.cts +273 -25
  41. package/dist/session-reconnect.d.ts +273 -25
  42. package/dist/smart-dom-reader.d.cts +273 -25
  43. package/dist/smart-dom-reader.d.ts +273 -25
  44. package/dist/theme-editor-preview.cjs +74 -73
  45. package/dist/theme-editor-preview.d.cts +280 -25
  46. package/dist/theme-editor-preview.d.ts +280 -25
  47. package/dist/theme-editor-preview.js +51 -50
  48. package/dist/theme-editor.cjs +10 -10
  49. package/dist/theme-editor.d.cts +293 -27
  50. package/dist/theme-editor.d.ts +293 -27
  51. package/dist/theme-editor.js +10 -10
  52. package/dist/theme-reference.cjs +1 -1
  53. package/dist/theme-reference.d.cts +1522 -11
  54. package/dist/theme-reference.d.ts +1522 -11
  55. package/dist/theme-reference.js +1 -1
  56. package/dist/voice-runtime-7DA7MJH4.js +1 -0
  57. package/dist/voice-runtime.cjs +1 -1
  58. package/dist/voice-runtime.d.cts +33 -0
  59. package/dist/voice-runtime.d.ts +33 -0
  60. package/dist/voice-runtime.js +1 -1
  61. package/dist/widget.css +1 -1
  62. package/package.json +3 -2
  63. package/src/__fixtures__/defaults-parity.v4.json +776 -0
  64. package/src/approval-ui-entry.ts +0 -1
  65. package/src/approval-ui-loader.ts +5 -4
  66. package/src/approval-ui.ts +0 -1
  67. package/src/client-identity-proof.test.ts +193 -0
  68. package/src/client-session-warm.test.ts +216 -0
  69. package/src/client-visitor-history.test.ts +6 -0
  70. package/src/client.ts +122 -30
  71. package/src/codegen.test.ts +24 -0
  72. package/src/components/activity-row.test.ts +100 -0
  73. package/src/components/activity-row.ts +136 -0
  74. package/src/components/approval-actions.test.ts +8 -5
  75. package/src/components/approval-actions.ts +19 -6
  76. package/src/components/approval-bubble.test.ts +56 -9
  77. package/src/components/approval-bubble.ts +36 -41
  78. package/src/components/composer-builder.ts +5 -2
  79. package/src/components/composer-parts.ts +10 -2
  80. package/src/components/header-builder.test.ts +32 -0
  81. package/src/components/header-builder.ts +7 -4
  82. package/src/components/header-layouts.test.ts +12 -0
  83. package/src/components/header-layouts.ts +3 -2
  84. package/src/components/launcher.ts +11 -2
  85. package/src/components/message-bubble.test.ts +22 -0
  86. package/src/components/message-bubble.ts +7 -3
  87. package/src/components/panel.test.ts +52 -1
  88. package/src/components/panel.ts +47 -8
  89. package/src/components/pill-composer-builder.test.ts +2 -0
  90. package/src/components/pill-composer-builder.ts +0 -1
  91. package/src/components/reasoning-bubble.ts +29 -17
  92. package/src/components/suggestions.test.ts +1 -0
  93. package/src/components/suggestions.ts +0 -16
  94. package/src/components/tool-bubble.ts +131 -114
  95. package/src/components/tool-details.test.ts +87 -0
  96. package/src/components/tool-details.ts +102 -0
  97. package/src/components/welcome.test.ts +8 -0
  98. package/src/components/welcome.ts +4 -2
  99. package/src/defaults-parity.test.ts +158 -0
  100. package/src/defaults.test.ts +69 -0
  101. package/src/defaults.ts +128 -49
  102. package/src/generated/runtype-openapi-contract.ts +2 -2
  103. package/src/index-core.ts +4 -0
  104. package/src/install.test.ts +24 -0
  105. package/src/install.ts +3 -1
  106. package/src/launcher-global.ts +2 -1
  107. package/src/launcher-variants.test.ts +52 -0
  108. package/src/runtime/init-update-reset.test.ts +21 -0
  109. package/src/session.ts +59 -7
  110. package/src/session.voice.test.ts +72 -1
  111. package/src/styles/widget-styles.test.ts +19 -0
  112. package/src/styles/widget.css +295 -23
  113. package/src/theme-editor/index.ts +2 -0
  114. package/src/theme-editor/preview-utils.test.ts +8 -0
  115. package/src/theme-editor/preview-utils.ts +7 -3
  116. package/src/theme-editor/sections.test.ts +31 -0
  117. package/src/theme-editor/sections.ts +55 -1
  118. package/src/theme-editor/state-preferences.test.ts +49 -0
  119. package/src/theme-editor/state.ts +73 -15
  120. package/src/theme-reference.test.ts +20 -0
  121. package/src/theme-reference.ts +11 -5
  122. package/src/tool-call-display-defaults.test.ts +33 -1
  123. package/src/types/theme.ts +80 -3
  124. package/src/types.ts +207 -22
  125. package/src/ui.activity-row.test.ts +91 -0
  126. package/src/ui.approval-plugin.test.ts +63 -0
  127. package/src/ui.composer-compact.test.ts +24 -2
  128. package/src/ui.composer-placement.test.ts +23 -0
  129. package/src/ui.detached-panel.test.ts +33 -6
  130. package/src/ui.docked.test.ts +19 -0
  131. package/src/ui.header-update-stability.test.ts +25 -0
  132. package/src/ui.identity-proof.test.ts +58 -0
  133. package/src/ui.launcher-teaser.test.ts +25 -0
  134. package/src/ui.message-width.test.ts +17 -2
  135. package/src/ui.reasoning-display.test.ts +92 -0
  136. package/src/ui.rebuild-composer.test.ts +20 -3
  137. package/src/ui.scroll.test.ts +32 -0
  138. package/src/ui.session-init.test.ts +312 -0
  139. package/src/ui.status-indicator.test.ts +82 -0
  140. package/src/ui.suggest-replies.test.ts +11 -0
  141. package/src/ui.ts +422 -74
  142. package/src/ui.v5-defaults.test.ts +144 -0
  143. package/src/ui.voice-prewarm.test.ts +222 -0
  144. package/src/ui.welcome.test.ts +92 -3
  145. package/src/utils/__snapshots__/tokens-parity.test.ts.snap +811 -140
  146. package/src/utils/code-generators.ts +14 -0
  147. package/src/utils/composer-compact.test.ts +0 -2
  148. package/src/utils/composer-compact.ts +2 -4
  149. package/src/utils/composer-placement.ts +2 -3
  150. package/src/utils/config-merge.test.ts +81 -5
  151. package/src/utils/config-merge.ts +13 -3
  152. package/src/utils/defaults-provenance.ts +67 -0
  153. package/src/utils/dock.ts +7 -1
  154. package/src/utils/launcher-variant.ts +16 -0
  155. package/src/utils/panel-config.ts +97 -0
  156. package/src/utils/status-indicator.ts +39 -0
  157. package/src/utils/theme.test.ts +182 -0
  158. package/src/utils/theme.ts +131 -18
  159. package/src/utils/tokens.test.ts +122 -1
  160. package/src/utils/tokens.ts +177 -17
  161. package/src/voice/runtype-voice-provider.ts +238 -27
  162. package/src/voice/voice.test.ts +272 -2
  163. package/src/welcome.test.ts +23 -0
  164. package/src/welcome.ts +16 -9
  165. package/dist/approval-ui-K7R5Q5OC.js +0 -1
  166. package/dist/voice-runtime-EFR3R5ES.js +0 -1
@@ -198,6 +198,8 @@ interface InputTokens extends ComponentTokenSet {
198
198
  backdropFilter?: string;
199
199
  }
200
200
  interface LauncherTokens extends ComponentTokenSet {
201
+ /** Distance from the viewport edges. Circle default: 20px; pill: 24px. */
202
+ offset?: string;
201
203
  size: string;
202
204
  iconSize: string;
203
205
  shadow: TokenReference<'shadow'>;
@@ -220,6 +222,15 @@ interface PanelTokens extends ComponentTokenSet {
220
222
  inset?: string;
221
223
  /** Background of the region revealed behind a detached panel. */
222
224
  canvasBackground?: string;
225
+ /** Chrome defaults by rendered panel mode. */
226
+ modes?: Partial<Record<'floating' | 'inline' | 'sidebar' | 'docked' | 'mobile', {
227
+ /** Full border shorthand (for example, `"1px solid var(--persona-border)"`). */
228
+ border?: string;
229
+ /** Box-shadow token reference or raw CSS shadow. */
230
+ shadow?: string;
231
+ /** Corner radius token reference or raw CSS radius. */
232
+ borderRadius?: TokenReference<'radius'>;
233
+ }>>;
223
234
  }
224
235
  /** Per-element text styling shared by themable text surfaces. */
225
236
  interface TextStyleTokens {
@@ -246,10 +257,16 @@ interface HeaderTokens extends ComponentTokenSet {
246
257
  */
247
258
  border?: TokenReference<'color'>;
248
259
  borderRadius: TokenReference<'radius'>;
260
+ /** Standard-header padding. @default "20px 24px" */
261
+ padding?: string;
262
+ /** Minimal-header padding. Explicitly wins over `padding`. @default "16px 24px" */
263
+ minimalPadding?: string;
249
264
  /** Background of the rounded avatar tile next to the title (Lucide / emoji / image). */
250
265
  iconBackground: TokenReference<'color'>;
251
266
  /** Foreground (glyph stroke or emoji text) on the header avatar tile. */
252
267
  iconForeground: TokenReference<'color'>;
268
+ /** Header identity glyph size as a fraction of its icon box. @default "0.6" */
269
+ iconScale?: string;
253
270
  /**
254
271
  * Legacy alias of `title.color`; `title.color` wins when both are set.
255
272
  * Unset, the title takes `foreground`, then the primary color.
@@ -288,6 +305,14 @@ interface HeaderTokens extends ComponentTokenSet {
288
305
  * sibling. @default "1.5"
289
306
  */
290
307
  controlStrokeWidth?: string;
308
+ /** Header control corner radius. Per-control radius overrides win. */
309
+ controlBorderRadius?: string;
310
+ /** Default control hover/focus fill. Explicit button backgrounds win. */
311
+ controlHoverBackground?: TokenReference<'color'>;
312
+ /** Default control hover/focus icon color. Explicit button colors win. */
313
+ controlHoverForeground?: TokenReference<'color'>;
314
+ /** Keyboard focus outline; unset preserves the browser default. */
315
+ controlFocusOutline?: string;
291
316
  /** Box-shadow on the header (e.g., a fade shadow to replace the default border). */
292
317
  shadow?: string;
293
318
  /** Override the header bottom border (e.g., `none`). */
@@ -462,6 +487,12 @@ interface MessageGeometryTokens {
462
487
  lineHeight?: string;
463
488
  }
464
489
  interface MessageTokens {
490
+ /** Height of the optional transcript top fade. Default 18px. */
491
+ topFadeHeight?: string;
492
+ /** Vertical gap between transcript turns. @default "12px" */
493
+ gap?: string;
494
+ /** Gap between turns in fullscreen mode; falls back to `gap`. */
495
+ fullscreenGap?: string;
465
496
  user: MessageGeometryTokens & {
466
497
  background: TokenReference<'color'>;
467
498
  text: TokenReference<'color'>;
@@ -475,6 +506,8 @@ interface MessageTokens {
475
506
  borderRadius: TokenReference<'radius'>;
476
507
  /** Assistant bubble border color (CSS color). */
477
508
  border?: TokenReference<'color'>;
509
+ /** Border width; set to 0px for a flat assistant response. @default "1px" */
510
+ borderWidth?: string;
478
511
  /** Assistant bubble box-shadow (token ref or raw CSS, e.g. `none`). */
479
512
  shadow?: string;
480
513
  };
@@ -593,12 +626,40 @@ interface AttachmentTokens {
593
626
  };
594
627
  }
595
628
  /** Tool-call row chrome (collapsible tool bubbles). */
596
- interface ToolBubbleTokens {
629
+ interface ActivityTokens {
630
+ /** Minimum activity row height. */
631
+ rowHeight?: string;
632
+ /** Group child indentation; falls back to indent when unset. V5: 0px. */
633
+ groupIndent?: string;
634
+ /** Extra vertical gap between grouped rows. V5: 0px. */
635
+ groupGap?: string;
636
+ /** Padding around expanded group children. V5: 0px. */
637
+ groupPadding?: string;
638
+ /** Gap between consecutive activity entries. V5: 0px. */
639
+ transcriptGap?: string;
640
+ /** Gap from activity to an assistant response. V5: 12px. */
641
+ responseGap?: string;
642
+ /** Expanded body padding. V5: 4px 0. */
643
+ bodyPadding?: string;
644
+ /** Expanded reasoning text size. V5: 13px. */
645
+ bodySize?: string;
646
+ /** Expanded reasoning line height. V5: 1.5. */
647
+ bodyLineHeight?: string;
648
+ /** Expanded reasoning font weight. V5: 400. */
649
+ bodyFontWeight?: string;
650
+ /** Gap between expanded detail sections. V5: 8px. */
651
+ sectionGap?: string;
652
+ labelSize?: string;
653
+ iconSize?: string;
654
+ indent?: string;
655
+ bodySurface?: TokenReference<'color'>;
656
+ }
657
+ interface ToolBubbleTokens extends ActivityTokens {
597
658
  /** Box-shadow for tool bubbles (token ref or raw CSS, e.g. `none`). */
598
659
  shadow: string;
599
660
  }
600
661
  /** Reasoning / “thinking” row chrome. */
601
- interface ReasoningBubbleTokens {
662
+ interface ReasoningBubbleTokens extends ActivityTokens {
602
663
  shadow: string;
603
664
  }
604
665
  /** One event-stream badge chip: fill + text pair. The chip border derives
@@ -732,6 +793,10 @@ interface ComposerChromeTokens {
732
793
  shadow: string;
733
794
  /** Border color of the composer form. @default semantic.colors.border */
734
795
  borderColor?: TokenReference<'color'>;
796
+ /** Focused form border color; falls back to borderColor. V5: a stronger neutral border. */
797
+ focusBorderColor?: TokenReference<'color'>;
798
+ /** Outer focus ring (CSS outline shorthand). V4: none; V5: a thin neutral ring. */
799
+ focusRing?: string;
735
800
  /** Inner padding of the composer form (raw CSS shorthand). @default "0.75rem 1rem" */
736
801
  padding?: string;
737
802
  /** Gap between the textarea row and the actions row. @default "0.5rem" */
@@ -750,12 +815,18 @@ interface ComposerChromeTokens {
750
815
  controlSize?: string;
751
816
  /** Glyph box inside those controls. @default "24px" */
752
817
  controlIconSize?: string;
818
+ /** Send/stop glyph size. Explicit sendButton.iconSize wins. V5: 18px. */
819
+ sendIconSize?: string;
820
+ /** Icon-mode submit button radius. V4 inherits the primary button; V5: 9999px. */
821
+ sendButtonRadius?: string;
822
+ /** Footer top border (CSS shorthand). V4: 1px solid divider; V5: none. */
823
+ footerBorder?: string;
753
824
  /**
754
825
  * Background painted behind an overlaid composer footer
755
826
  * (`composer.placement: "overlay"`). Any CSS `background` value, gradients
756
827
  * included — same convention as the shadow tokens. Inert under
757
828
  * `placement: "block"`.
758
- * @default "transparent"
829
+ * @default "transparent" (V4); a theme-aware 24px fade (V5)
759
830
  */
760
831
  overlayBand?: string;
761
832
  /** Segmented mode-group track. */
@@ -931,6 +1002,8 @@ interface ScrollToBottomTokens extends ComponentTokenSet {
931
1002
  }
932
1003
  /** Visual tokens shared by one suggestion presentation variant. */
933
1004
  interface SuggestionVariantTokens extends ComponentTokenSet {
1005
+ /** Label weight. V4: 500; V5: 400. */
1006
+ fontWeight?: string;
934
1007
  /** Space inside one item, between its icon and its copy. */
935
1008
  gap?: string;
936
1009
  /** Space between suggestion items in the container. */
@@ -979,6 +1052,7 @@ interface ComponentTokens {
979
1052
  voice: VoiceTokens;
980
1053
  approval: ApprovalTokens;
981
1054
  attachment: AttachmentTokens;
1055
+ activity?: ActivityTokens;
982
1056
  toolBubble: ToolBubbleTokens;
983
1057
  reasoningBubble: ReasoningBubbleTokens;
984
1058
  /** Event-stream inspector badge chips. */
@@ -1058,6 +1132,7 @@ interface ResolvedWelcomeConfig {
1058
1132
  * Optional on the interface, always populated by `resolveWelcomeConfig`:
1059
1133
  * a plugin literal built against an older minor must still type-check.
1060
1134
  */
1135
+ layout?: "top" | "centered";
1061
1136
  anchor?: AgentWidgetWelcomeAnchor;
1062
1137
  /** Percentage string; validated, falls back to "44%". */
1063
1138
  anchorComposerTop?: string;
@@ -4293,6 +4368,14 @@ type AgentWidgetToolCallCollapsedMode = "tool-call" | "tool-name" | "tool-previe
4293
4368
  */
4294
4369
  type AgentWidgetToolCallLoadingAnimation = "none" | "pulse" | "shimmer" | "shimmer-color" | "rainbow";
4295
4370
  type AgentWidgetToolCallDisplayFeature = {
4371
+ /** Activity chrome. Defaults to card in V4 and row with future.v5Defaults. */
4372
+ variant?: "card" | "row";
4373
+ /** Row status icons: always, active/attention-needed only, or never. V5 defaults to active; V4 to always. */
4374
+ iconVisibility?: "always" | "active" | "never";
4375
+ /** Row variant: open when the first content chunk arrives. Default false in V5; true in V4. */
4376
+ autoExpand?: boolean;
4377
+ /** Row variant: collapse once after completion, in ms; false disables. Default 1000. */
4378
+ autoCollapseDelay?: number | false;
4296
4379
  /**
4297
4380
  * Controls what collapsed tool call rows show in their header/summary area.
4298
4381
  * @default "tool-call"
@@ -4323,9 +4406,10 @@ type AgentWidgetToolCallDisplayFeature = {
4323
4406
  * Controls how a grouped tool sequence is rendered.
4324
4407
  * - `"stack"`: show the group summary and each child tool row.
4325
4408
  * - `"summary"`: show one consolidated summary row only.
4409
+ * - `"collapsible"`: expandable activity group (V5 default).
4326
4410
  * @default "stack"
4327
4411
  */
4328
- groupedMode?: "stack" | "summary";
4412
+ groupedMode?: "stack" | "summary" | "collapsible";
4329
4413
  /**
4330
4414
  * What happens to a tool call row once it completes.
4331
4415
  *
@@ -4356,6 +4440,14 @@ type AgentWidgetToolCallDisplayFeature = {
4356
4440
  /** See `features.toolCallDisplay.completedVisibility`. */
4357
4441
  type AgentWidgetToolCallCompletedVisibility = "kept" | "removed";
4358
4442
  type AgentWidgetReasoningDisplayFeature = {
4443
+ /** Activity chrome. Defaults to card in V4 and row with future.v5Defaults. */
4444
+ variant?: "card" | "row";
4445
+ /** Row status icons: always, active/attention-needed only, or never. V5 defaults to active; V4 to always. */
4446
+ iconVisibility?: "always" | "active" | "never";
4447
+ /** Row variant: open when the first content chunk arrives. Default false in V5; true in V4. */
4448
+ autoExpand?: boolean;
4449
+ /** Row variant: collapse once after completion, in ms; false disables. Default 1000. */
4450
+ autoCollapseDelay?: number | false;
4359
4451
  /**
4360
4452
  * When true, active collapsed reasoning rows can render a lightweight preview block.
4361
4453
  * @default false
@@ -5056,8 +5148,8 @@ interface AgentWidgetHistoryFeature {
5056
5148
  * otherwise `"browser"`) and narrows it to what the provider advertises, so a
5057
5149
  * browser-only provider is never asked for a scope it cannot serve. An
5058
5150
  * explicit `features.history.scope` is a hard request and still fails closed
5059
- * with `unsupported_scope`. `getIdentityProof` is never called for a supplied
5060
- * provider, and `HistoryOperationContext` carries only the resolved scope;
5151
+ * with `unsupported_scope`. History operations on a supplied provider never
5152
+ * call `getIdentityProof`, and `HistoryOperationContext` carries only the resolved scope;
5061
5153
  * report your own identity through `getIdentityStatus()` /
5062
5154
  * `subscribeIdentityStatus()`, which is what the scope banner and its retry
5063
5155
  * affordance read.
@@ -5441,7 +5533,7 @@ type EventStreamConfig = {
5441
5533
  /**
5442
5534
  * Fields to extract from event payloads for description text.
5443
5535
  * The first matching field value is displayed after the badge.
5444
- * @default ["flowName", "stepName", "name", "tool", "toolName"]
5536
+ * @default ["flowName", "stepName", "reasoningText", "text", "name", "tool", "toolName"]
5445
5537
  */
5446
5538
  descriptionFields?: string[];
5447
5539
  /**
@@ -5652,6 +5744,8 @@ type AgentWidgetComposerBarPeekConfig = {
5652
5744
  streamAnimation?: AgentWidgetStreamAnimationFeature;
5653
5745
  };
5654
5746
  type AgentWidgetLauncherConfig = {
5747
+ /** Collapsed launcher shape. V4 defaults to pill; V5 defaults to circle. */
5748
+ variant?: "pill" | "circle";
5655
5749
  enabled?: boolean;
5656
5750
  title?: string;
5657
5751
  subtitle?: string;
@@ -6395,9 +6489,9 @@ type AgentWidgetComposerConfig = {
6395
6489
  /**
6396
6490
  * Where the composer footer sits relative to the transcript.
6397
6491
  *
6398
- * - `"block"` (default): the footer is a flex sibling below the scroll body.
6492
+ * - `"block"` (V4 default): the footer is a flex sibling below the scroll body.
6399
6493
  * Nothing scrolls behind it.
6400
- * - `"overlay"`: the footer is absolutely overlaid on the scroll body, so the
6494
+ * - `"overlay"` (V5 default): the footer is absolutely overlaid on the scroll body, so the
6401
6495
  * transcript scrolls behind it (the chatgpt.com / claude.ai model, where the
6402
6496
  * composer is sticky inside the scroller). The widget reserves the footer's
6403
6497
  * live height as bottom padding on the scroll body and on a plugin welcome
@@ -6409,7 +6503,7 @@ type AgentWidgetComposerConfig = {
6409
6503
  * included) and `theme.components.input.backdropFilter`.
6410
6504
  *
6411
6505
  * Ignored in composer-bar mount mode, which owns its own geometry.
6412
- * @default "block"
6506
+ * @default "block" (V4), "overlay" (V5)
6413
6507
  */
6414
6508
  placement?: ComposerPlacement;
6415
6509
  /**
@@ -6423,8 +6517,9 @@ type AgentWidgetComposerConfig = {
6423
6517
  *
6424
6518
  * `"single-row"` describes the IDLE composer only. It composes with the
6425
6519
  * compact state, so a wrapped draft, chips, attachment previews, a quote, a
6426
- * pending card, or live dictation all fall back to the stacked card, exactly
6427
- * as `data-persona-composer-compact` does today.
6520
+ * pending card all fall back to the stacked card, exactly
6521
+ * as `data-persona-composer-compact` does today. Recording alone does not
6522
+ * expand the composer; dictated text expands it when it wraps.
6428
6523
  *
6429
6524
  * Ignored in composer-bar mount mode, whose pill is already one row.
6430
6525
  * @default "stacked"
@@ -6466,7 +6561,14 @@ type AgentWidgetClearChatConfig = {
6466
6561
  showTooltip?: boolean;
6467
6562
  };
6468
6563
  type AgentWidgetStatusIndicatorConfig = {
6564
+ /** Show the indicator. Explicit false also hides transient connection states. */
6469
6565
  visible?: boolean;
6566
+ /**
6567
+ * "always" shows status beneath the composer; "transient" shows connecting,
6568
+ * reconnecting, and error status above it, hiding normal idle/streaming status.
6569
+ * Available in both defaults states. Default: "always" in v4, "transient" in v5.
6570
+ */
6571
+ mode?: "always" | "transient";
6470
6572
  /** Text alignment. Default: 'right'. */
6471
6573
  align?: 'left' | 'center' | 'right';
6472
6574
  idleText?: string;
@@ -6480,6 +6582,22 @@ type AgentWidgetStatusIndicatorConfig = {
6480
6582
  /** Status text while a reconnect attempt is in flight. */
6481
6583
  resumingText?: string;
6482
6584
  };
6585
+ /** Built-in `voiceRecognition.prewarm` triggers. See {@link AgentWidgetVoiceRecognitionConfig.prewarm}. */
6586
+ type AgentWidgetVoicePrewarmTrigger = 'hover';
6587
+ /**
6588
+ * Custom `voiceRecognition.prewarm` trigger. Runs while the composer has a mic
6589
+ * button, and again when the button is rebuilt or `update()` swaps in a
6590
+ * different function. Call `warm()` whenever the visitor shows intent to talk
6591
+ * (it is safe to call repeatedly). Return a cleanup to run on replacement.
6592
+ */
6593
+ type AgentWidgetVoicePrewarmHook = (context: {
6594
+ /** Fire-and-forget voice warm-up; latched and error-swallowing. */
6595
+ warm: () => void;
6596
+ /** The composer's current mic button. */
6597
+ micButton: HTMLButtonElement;
6598
+ /** The widget's mount element. */
6599
+ mount: HTMLElement;
6600
+ }) => void | (() => void);
6483
6601
  type AgentWidgetVoiceRecognitionConfig = {
6484
6602
  /**
6485
6603
  * Enable the mic button and voice input. The mic still only renders when the
@@ -6545,6 +6663,29 @@ type AgentWidgetVoiceRecognitionConfig = {
6545
6663
  * Fires once per turn after the reply completes.
6546
6664
  */
6547
6665
  onMetrics?: (metrics: VoiceMetrics) => void;
6666
+ /**
6667
+ * Warm the voice path when the visitor shows intent to talk, before the mic
6668
+ * click, so the call starts faster.
6669
+ *
6670
+ * - `'hover'`: when the pointer enters the mic button, it receives focus, or
6671
+ * (on touch) the first pointer-down on it.
6672
+ * - `false`: never.
6673
+ * - A function: custom trigger. Called with `{ warm, micButton, mount }`
6674
+ * while the mic button exists (and again when the button is rebuilt or
6675
+ * `update()` swaps in a different function); call `warm()` whenever you
6676
+ * decide, e.g. when the panel opens. May return a cleanup that runs on
6677
+ * destroy, rebuild, or replacement. Replaces the built-in trigger.
6678
+ *
6679
+ * What `warm()` does depends on the provider: `runtype` fires its prewarm
6680
+ * (see `provider.runtype.prewarmMode`), a `custom` provider's optional
6681
+ * {@link VoiceProvider.prewarm} runs, and the browser (Web Speech) path
6682
+ * starts the client-token session init (as `sessionInit` does), since speech
6683
+ * recognition itself cannot start before the click. Warming is
6684
+ * fire-and-forget, latched, and never surfaces an error or UI state.
6685
+ *
6686
+ * @default 'hover' in client token mode, otherwise `false`
6687
+ */
6688
+ prewarm?: AgentWidgetVoicePrewarmTrigger | AgentWidgetVoicePrewarmHook | false;
6548
6689
  provider?: {
6549
6690
  type: 'browser' | 'runtype' | 'custom';
6550
6691
  browser?: {
@@ -6566,6 +6707,23 @@ type AgentWidgetVoiceRecognitionConfig = {
6566
6707
  * `@runtypelabs/persona/voice-worklet-player` for a jitter-buffered engine.
6567
6708
  */
6568
6709
  createPlaybackEngine?: () => VoicePlaybackEngine | Promise<VoicePlaybackEngine>;
6710
+ /**
6711
+ * How `prewarm()` warms the voice path (see `voiceRecognition.prewarm`).
6712
+ *
6713
+ * - `'request'` (default): a fire-and-forget
6714
+ * `POST {host}/v1/client/agents/{agentId}/voice/prewarm`.
6715
+ * - `'attach'`: open the voice WebSocket ahead of the click without
6716
+ * starting a call; the click then starts the call on that socket. It can
6717
+ * create server work before the visitor clicks, so it is opt-in.
6718
+ * @default 'request'
6719
+ */
6720
+ prewarmMode?: 'request' | 'attach';
6721
+ /**
6722
+ * `'attach'` mode: how long (ms) an attached socket waits for the click
6723
+ * before it closes. The server clamps it to 30000..600000.
6724
+ * @default 30000
6725
+ */
6726
+ attachIdleMs?: number;
6569
6727
  /** @deprecated No-op on the realtime path: the server's STT owns turn-taking. */
6570
6728
  pauseDuration?: number;
6571
6729
  /** @deprecated No-op on the realtime path: the server's STT owns turn-taking. */
@@ -6866,6 +7024,13 @@ interface VoiceProvider {
6866
7024
  deactivateBargeIn?(): Promise<void>;
6867
7025
  /** Stop playback / cancel in-flight request without starting recording */
6868
7026
  stopPlayback?(): void;
7027
+ /**
7028
+ * Warm the provider ahead of `startListening()` (the widget calls it on mic
7029
+ * intent, see `voiceRecognition.prewarm`). Must be fire-and-forget: never
7030
+ * throw, emit errors or status, or acquire the microphone. May be called
7031
+ * repeatedly; throttle as needed.
7032
+ */
7033
+ prewarm?(): void;
6869
7034
  }
6870
7035
  /**
6871
7036
  * Extra context for an approval decision, surfaced to `onDecision` and to the
@@ -7241,7 +7406,8 @@ type AgentWidgetResolvedSuggestion = {
7241
7406
  };
7242
7407
  /** Presentation keys shared by every suggestion surface. */
7243
7408
  type AgentWidgetSuggestionSurfaceConfig = {
7244
- /** Item density. Defaults to `card` for starters and `chip` for follow-ups. */
7409
+ /** Item density. V4 starters: card. V5 starters: chip, or card in fullscreen.
7410
+ * Follow-ups default to chip. */
7245
7411
  variant?: AgentWidgetSuggestionVariant;
7246
7412
  /** Default click behavior, overridable per item. Defaults to `send`. */
7247
7413
  behavior?: AgentWidgetSuggestionBehavior;
@@ -7252,7 +7418,7 @@ type AgentWidgetSuggestionSurfaceConfig = {
7252
7418
  * own stacking.
7253
7419
  */
7254
7420
  overflow?: "scroll" | "wrap";
7255
- /** Maximum visible items. Defaults to 4. */
7421
+ /** Maximum visible items. Defaults to 4, or 3 for V5 non-fullscreen starters. */
7256
7422
  maxItems?: number;
7257
7423
  };
7258
7424
  type AgentWidgetStarterSuggestionsConfig = AgentWidgetSuggestionSurfaceConfig & {
@@ -7306,8 +7472,8 @@ type AgentWidgetSuggestionsConfig = {
7306
7472
  type AgentWidgetWelcomeVariant = "card" | "hero" | "none";
7307
7473
  /**
7308
7474
  * When the welcome surface goes away. `"never"` is the default for `"card"`;
7309
- * `"on-first-message"` is the default for `"hero"` and cannot be overridden
7310
- * there.
7475
+ * `"on-first-message"` is forced for legacy V4 `"hero"`. V5 defaults every
7476
+ * variant to `"on-first-message"`. Explicit layout opts into overridable dismissal.
7311
7477
  */
7312
7478
  type AgentWidgetWelcomeDismiss = "never" | "on-first-message";
7313
7479
  /**
@@ -7361,7 +7527,10 @@ type AgentWidgetWelcomeAlign = "start" | "center";
7361
7527
  * host-set value from a filled-in default.
7362
7528
  */
7363
7529
  interface AgentWidgetWelcomeConfig {
7364
- /** Card or hero title. Defaults to "Hello 👋". */
7530
+ /** Vertical placement: V4 defaults to top; V5 to centered. Fullscreen centered
7531
+ * welcomes also raise the empty composer unless `anchor` is explicitly set. */
7532
+ layout?: "top" | "centered";
7533
+ /** Card or hero title. V4: "Hello 👋". V5: "What can I help with?". */
7365
7534
  title?: string;
7366
7535
  /**
7367
7536
  * Small muted line above the title, e.g. a section name. Omitted when unset
@@ -7374,19 +7543,22 @@ interface AgentWidgetWelcomeConfig {
7374
7543
  icon?: AgentWidgetWelcomeIcon;
7375
7544
  /**
7376
7545
  * Horizontal alignment of the kicker, title, subtitle, and starter
7377
- * suggestions. Unset follows the variant: `card` starts, `hero` centers.
7546
+ * suggestions. Centered layouts default to center. Otherwise unset follows
7547
+ * the variant: `card` starts, `hero` centers.
7378
7548
  */
7379
7549
  align?: AgentWidgetWelcomeAlign;
7380
7550
  /** @default "card" */
7381
7551
  variant?: AgentWidgetWelcomeVariant;
7382
- /** @default "never" for `card`, always `"on-first-message"` for `hero`. */
7552
+ /** V4: never for card, forced on-first-message for hero. V5: on-first-message
7553
+ * for all variants; explicit values win. Explicit layout also allows overriding
7554
+ * the legacy hero dismissal in V4. */
7383
7555
  dismiss?: AgentWidgetWelcomeDismiss;
7384
7556
  /**
7385
7557
  * Vertical anchoring of the greeting-plus-composer pair in the EMPTY
7386
7558
  * conversation only. On the first message the pair drops to the bottom
7387
7559
  * (animated; see `data-persona-conversation-state`).
7388
7560
  *
7389
- * - `"bottom"` (default): the composer stays pinned at the bottom.
7561
+ * - `"bottom"`: the composer stays pinned at the bottom.
7390
7562
  * - `"center"`: greeting and composer float together so the composer's top
7391
7563
  * edge lands at `anchorComposerTop` of the panel column, and the welcome
7392
7564
  * surface is end-anchored `composerGap` above it.
@@ -7394,7 +7566,8 @@ interface AgentWidgetWelcomeConfig {
7394
7566
  * Composes with either `composer.placement`. Ignored in composer-bar mount
7395
7567
  * mode. `renderWelcome` plugin content inherits the anchor: the widget
7396
7568
  * positions the overlay host and reserves the composer zone.
7397
- * @default "bottom"
7569
+ * Defaults to bottom, except centered fullscreen layouts, which center the
7570
+ * measured greeting/composer group when no anchor override is supplied.
7398
7571
  */
7399
7572
  anchor?: AgentWidgetWelcomeAnchor;
7400
7573
  /**
@@ -7886,6 +8059,9 @@ type AgentWidgetLayoutConfig = {
7886
8059
  * `launcher.composerBar.contentMaxWidth`)
7887
8060
  */
7888
8061
  contentMaxWidth?: string;
8062
+ /** Fade the transcript's top edge when content is scrolled above it.
8063
+ * Defaults to false in V4 and true with future.v5Defaults. */
8064
+ topFade?: boolean;
7889
8065
  };
7890
8066
  /**
7891
8067
  * Token types for marked renderer methods
@@ -8499,7 +8675,30 @@ type AgentWidgetLoadingIndicatorConfig = {
8499
8675
  */
8500
8676
  renderIdle?: (context: IdleIndicatorRenderContext) => HTMLElement | null;
8501
8677
  };
8678
+ /** Built-in `sessionInit` triggers. See {@link AgentWidgetConfig.sessionInit}. */
8679
+ type AgentWidgetSessionInitTrigger = 'input' | 'focus' | 'mount' | 'send';
8680
+ /**
8681
+ * Custom `sessionInit` trigger. Runs when the widget mounts in client token mode,
8682
+ * and again if `update()` swaps in a different function. Call `warm()` whenever
8683
+ * the visitor shows intent (it is safe to call repeatedly). Return a cleanup to
8684
+ * run when the widget is destroyed or the hook is replaced.
8685
+ */
8686
+ type AgentWidgetSessionInitHook = (context: {
8687
+ /** Fire-and-forget early session init; latched and error-swallowing. */
8688
+ warm: () => void;
8689
+ /** The widget's mount element. */
8690
+ mount: HTMLElement;
8691
+ }) => void | (() => void);
8502
8692
  type AgentWidgetConfig = {
8693
+ /** Opt in to upcoming major-version defaults without changing explicit settings. */
8694
+ future?: {
8695
+ /**
8696
+ * Use the v5 default styling as it rolls out in 4.x. Every affected setting
8697
+ * remains independently configurable. Explicit options and theme tokens win.
8698
+ * @default false
8699
+ */
8700
+ v5Defaults?: boolean;
8701
+ };
8503
8702
  apiUrl?: string;
8504
8703
  flowId?: string;
8505
8704
  /**
@@ -8654,6 +8853,46 @@ type AgentWidgetConfig = {
8654
8853
  * ```
8655
8854
  */
8656
8855
  onSessionExpired?: () => void;
8856
+ /**
8857
+ * When the widget calls `/v1/client/init` in client token mode, ahead of the
8858
+ * first send. Ignored outside client token mode.
8859
+ *
8860
+ * - `'input'` (default): on the composer's first user keystroke that leaves
8861
+ * non-empty text. Programmatic value changes (restored drafts,
8862
+ * `setMessage()`, history recall) do not count.
8863
+ * - `'focus'`: when the visitor focuses the composer by pointer or Tab (and
8864
+ * on first input, as a fallback). Programmatic focus, such as
8865
+ * `autoFocusInput` on open or mount, does not count.
8866
+ * - `'mount'`: as soon as the widget mounts (the behavior before this option
8867
+ * existed). Use it when a server-configured welcome message, which arrives
8868
+ * with the init response, must show before the visitor types.
8869
+ * - `'send'`: no early init; the first send initializes the session.
8870
+ * - A function: custom trigger. Called on mount (and when `update()` swaps
8871
+ * in a different function) with a `warm` callback to call whenever you
8872
+ * decide (e.g. on hover); may return a cleanup that runs on destroy or
8873
+ * replacement. Replaces the built-in triggers.
8874
+ *
8875
+ * The early init is fire-and-forget: it runs at most once per session
8876
+ * lifetime (re-armed after expiry or a new conversation), sends exactly the
8877
+ * same request the send would, and swallows errors. A failure resurfaces
8878
+ * when the send retries init. A send during an in-flight early init reuses
8879
+ * it, so only one `/v1/client/init` is issued. When visitor history is
8880
+ * enabled the widget still initializes on mount to restore the conversation.
8881
+ * Hosts can also trigger it imperatively with `controller.warmSession()`.
8882
+ *
8883
+ * @default 'input'
8884
+ *
8885
+ * @example
8886
+ * ```typescript
8887
+ * config: {
8888
+ * clientToken: 'ct_live_...',
8889
+ * sessionInit: ({ warm, mount }) => {
8890
+ * mount.addEventListener('pointerenter', warm, { once: true });
8891
+ * }
8892
+ * }
8893
+ * ```
8894
+ */
8895
+ sessionInit?: AgentWidgetSessionInitTrigger | AgentWidgetSessionInitHook;
8657
8896
  /**
8658
8897
  * Get stored session ID for session resumption (client token mode only).
8659
8898
  * Called when initializing a new session to check if there's a previous session_id
@@ -8686,13 +8925,20 @@ type AgentWidgetConfig = {
8686
8925
  */
8687
8926
  setStoredSessionId?: (sessionId: string) => void;
8688
8927
  /**
8689
- * Called immediately before any cross-device history request and before a
8928
+ * With identityProvider, called before every client-token chat POST, including retries, independently of history.
8929
+ * Also called immediately before any cross-device history request and before a
8690
8930
  * conversationId resume of a conversation discovered on another device.
8691
- * Return a fresh end-user access token (rt_eu_… / JWT). Null uses exact-browser
8692
- * scope only for a never-bound visitor; a previously bound visitor fails closed
8693
- * until resetHistoryIdentity() runs. Never cached by the widget.
8931
+ * Return a fresh end-user access token (rt_eu_… / JWT). Null stops identity-enabled chat.
8932
+ * For history only, null uses exact-browser scope for a never-bound visitor;
8933
+ * a bound visitor fails closed until resetHistoryIdentity(). Never cached.
8694
8934
  */
8695
8935
  getIdentityProof?: () => string | null | Promise<string | null>;
8936
+ /**
8937
+ * Provider name registered with Runtype, for example "clerk". Enables per-request
8938
+ * chat identity through getIdentityProof without enabling history. A missing or
8939
+ * failed proof stops the turn; omitting this preserves history-only callbacks.
8940
+ */
8941
+ identityProvider?: string;
8696
8942
  /**
8697
8943
  * Read the persisted active conversation id (client token mode only).
8698
8944
  * Called only after the internal stored-state bootstrap gate resolves.
@@ -9366,6 +9612,8 @@ type AgentWidgetReasoning = {
9366
9612
  durationMs?: number;
9367
9613
  };
9368
9614
  type AgentWidgetToolCall = {
9615
+ /** Optional approval state for activity-row status chrome. */
9616
+ approvalStatus?: "pending" | "approved" | "denied" | "timeout";
9369
9617
  id: string;
9370
9618
  name?: string;
9371
9619
  status: "pending" | "running" | "complete";
@@ -9735,7 +9983,11 @@ declare class ThemeEditorState {
9735
9983
  private history;
9736
9984
  private historyIndex;
9737
9985
  private suppressHistory;
9738
- constructor(initialTheme?: Partial<PersonaTheme>, initialConfig?: Partial<AgentWidgetConfig>, options?: {
9986
+ private authoredConfig;
9987
+ private authoredTheme;
9988
+ private mergeDefaults;
9989
+ private snapshotIntent;
9990
+ constructor(initialTheme?: DeepPartial<PersonaTheme>, initialConfig?: Partial<AgentWidgetConfig>, options?: {
9739
9991
  mergeDefaults?: boolean;
9740
9992
  });
9741
9993
  /**
@@ -9774,6 +10026,8 @@ declare class ThemeEditorState {
9774
10026
  redo(): void;
9775
10027
  exportSnapshot(): ConfiguratorSnapshot;
9776
10028
  onChange(listener: ConfigChangeListener): () => void;
10029
+ private recordIntent;
10030
+ private rebaseDefaults;
9777
10031
  private syncThemeIntoConfig;
9778
10032
  private notifyListeners;
9779
10033
  private recordHistory;
@@ -9809,6 +10063,18 @@ declare const STATUS_COLORS_SECTION: SectionDef;
9809
10063
  declare const ADVANCED_TOKENS_SECTION: SectionDef;
9810
10064
  /** V2 Style tab sections: outcome-oriented editor */
9811
10065
  declare const STYLE_SECTIONS_V2: SectionDef[];
10066
+ /**
10067
+ * Resolves editor field metadata from the same versioned config and token
10068
+ * defaults as the widget. The static field value remains the fallback for
10069
+ * presentation-only values (such as intentionally blank optional tokens).
10070
+ */
10071
+ declare function resolveEditorFieldDefault(field: FieldDef, future?: AgentWidgetConfig['future']): unknown;
10072
+ /**
10073
+ * Returns editor tabs with default metadata resolved for the selected defaults
10074
+ * version. Callers keep authored values separate; this only drives UI hints.
10075
+ */
10076
+ declare function getThemeEditorTabs(future?: AgentWidgetConfig['future']): TabDef[];
10077
+ /** Legacy editor metadata, resolved through the v4 defaults tree. */
9812
10078
  declare const ALL_TABS: TabDef[];
9813
10079
  type ThemeScope = 'theme' | 'darkTheme';
9814
10080
  type ThemeVariant = 'light' | 'dark';
@@ -10220,4 +10486,4 @@ declare function runContrastChecks(state: ThemeEditorLike, level?: ContrastLevel
10220
10486
  /** Compact contrast warnings for the regions a mutation touched. */
10221
10487
  declare function quickContrastWarnings(state: ThemeEditorLike, pairKeys: string[], variant?: 'light' | 'dark' | 'both', level?: ContrastLevel): ContrastWarning[];
10222
10488
 
10223
- export { ADVANCED_TOKENS_SECTION, ALL_ROLES, ALL_TABS, ARTIFACT_DISPLAY_PREFERENCE_SECTION, BRAND_PALETTE_SECTION, BUILT_IN_PRESETS, type BuildTranscriptStreamFramesOptions, COLORS_SECTIONS, COLOR_FAMILIES, COMPONENTS_SECTIONS, COMPONENT_COLOR_SECTIONS, COMPONENT_SHAPE_SECTIONS, CONFIGURE_SECTIONS, CONFIGURE_SUB_GROUPS, CONTRAST_PAIRS, CSS_NAMED_COLORS, type ColorScaleOptions, type CompareMode, type ConfigChangeListener, type ConfiguratorSnapshot, type ContrastCheck, type ContrastLevel, type ContrastReport, type ContrastWarning, type CreateThemeEditorToolsOptions, DEVICE_DIMENSIONS, type DetectedRoleAssignment, type EditTarget, type FieldDef, type FieldType, HOME_SUGGESTION_CHIPS, INTERFACE_ROLES_SECTION, MOCK_BROWSER_CONTENT, MOCK_WORKSPACE_CONTENT, type OnChangeCallback, PALETTE_SECTION, PREVIEW_STORAGE_ADAPTER, type PreviewConfigOptions, type PreviewScene, type PreviewShellMode, type PreviewShellPalette, type PreviewTranscriptEntryPreset, RADIUS_PRESETS, ROLE_ASSISTANT_MESSAGES, ROLE_BORDERS, ROLE_FAMILIES, ROLE_FAMILY_LABELS, ROLE_HEADER, ROLE_INPUT, ROLE_INTENSITIES, ROLE_LINKS_FOCUS, ROLE_PRIMARY_ACTIONS, ROLE_SCROLL_TO_BOTTOM, ROLE_SURFACES, ROLE_USER_MESSAGES, type RoleAssignmentOptions, type RoleFamily, type RoleIntensity, type RoleState, type RoleTarget, type RoleTargetKind, SEMANTIC_COLORS_SECTION, SHADE_KEYS, SHELL_STYLE_ID, STATUS_COLORS_SECTION, STATUS_PALETTE_SECTION, STREAM_AND_ARTIFACTS_SUB_GROUP, STYLE_SECTIONS, STYLE_SECTIONS_V2, type SectionDef, type SectionPreset, type SelectOption, type SliderOptions, type SubGroupDef, THEME_EDITOR_PRESETS, THEME_SECTION, type TabDef, type ThemeEditorLike, type ThemeEditorPreset, ThemeEditorState, type ThemeSummary, type TokenRefOptions, type ToolAnnotations, type ToolContent, type ToolExecute, type ToolImageContent, type ToolResult, type ToolTextContent, type TranscriptStreamFrame, type WebMcpTool, ZOOM_MAX, ZOOM_MIN, appendPreviewTranscriptEntry, applySceneConfig, applyShellTheme, buildPreviewConfig, buildPreviewConfigWithMessages, buildShellCss, buildSrcdoc, buildSummary, buildTranscriptStreamFrames, coerceColor, coerceFamily, coerceIntensity, coerceRadius, coerceRoundnessStyle, coerceScheme, convertFromPx, convertToPx, createPreviewMessages, createPreviewTranscriptEntry, createThemeEditorTools, detectRoleAssignment, escapeHtml, findSection, formatCssValue, generateColorScale, getPreviewTranscriptPresetLabel, getShellPalette, getThemeEditorPreset, hexToHsl, hslToHex, isValidHex, normalizeColorValue, paletteColorPath, parseCssValue, presetStreamsText, quickContrastWarnings, resolveRoleAssignment, resolveThemeColorPath, rgbToHex, runContrastChecks, scopeSection, tokenRefDisplayName, toolResult, wcagContrastRatio };
10489
+ export { ADVANCED_TOKENS_SECTION, ALL_ROLES, ALL_TABS, ARTIFACT_DISPLAY_PREFERENCE_SECTION, BRAND_PALETTE_SECTION, BUILT_IN_PRESETS, type BuildTranscriptStreamFramesOptions, COLORS_SECTIONS, COLOR_FAMILIES, COMPONENTS_SECTIONS, COMPONENT_COLOR_SECTIONS, COMPONENT_SHAPE_SECTIONS, CONFIGURE_SECTIONS, CONFIGURE_SUB_GROUPS, CONTRAST_PAIRS, CSS_NAMED_COLORS, type ColorScaleOptions, type CompareMode, type ConfigChangeListener, type ConfiguratorSnapshot, type ContrastCheck, type ContrastLevel, type ContrastReport, type ContrastWarning, type CreateThemeEditorToolsOptions, DEVICE_DIMENSIONS, type DetectedRoleAssignment, type EditTarget, type FieldDef, type FieldType, HOME_SUGGESTION_CHIPS, INTERFACE_ROLES_SECTION, MOCK_BROWSER_CONTENT, MOCK_WORKSPACE_CONTENT, type OnChangeCallback, PALETTE_SECTION, PREVIEW_STORAGE_ADAPTER, type PreviewConfigOptions, type PreviewScene, type PreviewShellMode, type PreviewShellPalette, type PreviewTranscriptEntryPreset, RADIUS_PRESETS, ROLE_ASSISTANT_MESSAGES, ROLE_BORDERS, ROLE_FAMILIES, ROLE_FAMILY_LABELS, ROLE_HEADER, ROLE_INPUT, ROLE_INTENSITIES, ROLE_LINKS_FOCUS, ROLE_PRIMARY_ACTIONS, ROLE_SCROLL_TO_BOTTOM, ROLE_SURFACES, ROLE_USER_MESSAGES, type RoleAssignmentOptions, type RoleFamily, type RoleIntensity, type RoleState, type RoleTarget, type RoleTargetKind, SEMANTIC_COLORS_SECTION, SHADE_KEYS, SHELL_STYLE_ID, STATUS_COLORS_SECTION, STATUS_PALETTE_SECTION, STREAM_AND_ARTIFACTS_SUB_GROUP, STYLE_SECTIONS, STYLE_SECTIONS_V2, type SectionDef, type SectionPreset, type SelectOption, type SliderOptions, type SubGroupDef, THEME_EDITOR_PRESETS, THEME_SECTION, type TabDef, type ThemeEditorLike, type ThemeEditorPreset, ThemeEditorState, type ThemeSummary, type TokenRefOptions, type ToolAnnotations, type ToolContent, type ToolExecute, type ToolImageContent, type ToolResult, type ToolTextContent, type TranscriptStreamFrame, type WebMcpTool, ZOOM_MAX, ZOOM_MIN, appendPreviewTranscriptEntry, applySceneConfig, applyShellTheme, buildPreviewConfig, buildPreviewConfigWithMessages, buildShellCss, buildSrcdoc, buildSummary, buildTranscriptStreamFrames, coerceColor, coerceFamily, coerceIntensity, coerceRadius, coerceRoundnessStyle, coerceScheme, convertFromPx, convertToPx, createPreviewMessages, createPreviewTranscriptEntry, createThemeEditorTools, detectRoleAssignment, escapeHtml, findSection, formatCssValue, generateColorScale, getPreviewTranscriptPresetLabel, getShellPalette, getThemeEditorPreset, getThemeEditorTabs, hexToHsl, hslToHex, isValidHex, normalizeColorValue, paletteColorPath, parseCssValue, presetStreamsText, quickContrastWarnings, resolveEditorFieldDefault, resolveRoleAssignment, resolveThemeColorPath, rgbToHex, runContrastChecks, scopeSection, tokenRefDisplayName, toolResult, wcagContrastRatio };