@runtypelabs/persona 4.14.0 → 4.15.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 (81) hide show
  1. package/README.md +4 -4
  2. package/dist/animations/glyph-cycle.d.cts +1 -1
  3. package/dist/animations/glyph-cycle.d.ts +1 -1
  4. package/dist/animations/{types-DveIaNx6.d.cts → types-BpWGm7_6.d.cts} +17 -0
  5. package/dist/animations/{types-DveIaNx6.d.ts → types-BpWGm7_6.d.ts} +17 -0
  6. package/dist/animations/wipe.d.cts +1 -1
  7. package/dist/animations/wipe.d.ts +1 -1
  8. package/dist/chunk-QJ4LV2KW.js +1 -0
  9. package/dist/codegen.cjs +12 -11
  10. package/dist/codegen.js +14 -13
  11. package/dist/{context-mentions-ONG7A7M6.js → context-mentions-BTSTIBFC.js} +1 -1
  12. package/dist/context-mentions.cjs +11 -8
  13. package/dist/context-mentions.d.cts +241 -16
  14. package/dist/context-mentions.d.ts +241 -16
  15. package/dist/context-mentions.js +11 -8
  16. package/dist/index.cjs +67 -66
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +301 -41
  19. package/dist/index.d.ts +301 -41
  20. package/dist/index.global.js +59 -56
  21. package/dist/index.global.js.map +1 -1
  22. package/dist/index.js +67 -66
  23. package/dist/index.js.map +1 -1
  24. package/dist/launcher.global.js +5 -2
  25. package/dist/launcher.global.js.map +1 -1
  26. package/dist/smart-dom-reader.d.cts +241 -16
  27. package/dist/smart-dom-reader.d.ts +241 -16
  28. package/dist/theme-editor-preview.cjs +66 -66
  29. package/dist/theme-editor-preview.d.cts +255 -17
  30. package/dist/theme-editor-preview.d.ts +255 -17
  31. package/dist/theme-editor-preview.js +56 -56
  32. package/dist/theme-editor.cjs +5 -5
  33. package/dist/theme-editor.d.cts +242 -17
  34. package/dist/theme-editor.d.ts +242 -17
  35. package/dist/theme-editor.js +7 -7
  36. package/dist/theme-reference.cjs +1 -1
  37. package/dist/theme-reference.d.cts +38 -0
  38. package/dist/theme-reference.d.ts +38 -0
  39. package/dist/theme-reference.js +1 -1
  40. package/dist/widget.css +1 -1
  41. package/package.json +1 -1
  42. package/src/ask-user-question-tool.ts +10 -7
  43. package/src/components/artifact-preview.ts +1 -1
  44. package/src/components/composer-parts.test.ts +103 -4
  45. package/src/components/composer-parts.ts +53 -15
  46. package/src/components/messages.ts +5 -2
  47. package/src/components/panel.ts +31 -5
  48. package/src/components/pill-composer-builder.test.ts +18 -0
  49. package/src/components/suggestions.test.ts +233 -0
  50. package/src/components/suggestions.ts +463 -81
  51. package/src/components/widget-view.ts +4 -0
  52. package/src/defaults.ts +5 -3
  53. package/src/generated/runtype-openapi-contract.ts +17 -0
  54. package/src/index-core.ts +18 -2
  55. package/src/launcher-global.ts +1 -1
  56. package/src/plugins/types.ts +71 -3
  57. package/src/presets.ts +3 -3
  58. package/src/session.ts +10 -8
  59. package/src/styles/widget-styles.test.ts +162 -0
  60. package/src/styles/widget.css +430 -0
  61. package/src/suggest-replies-tool.test.ts +233 -2
  62. package/src/suggest-replies-tool.ts +115 -39
  63. package/src/theme-editor/preview-utils.test.ts +34 -0
  64. package/src/theme-editor/preview-utils.ts +77 -2
  65. package/src/theme-editor/sections.test.ts +33 -0
  66. package/src/theme-editor/sections.ts +53 -5
  67. package/src/theme-reference.ts +9 -2
  68. package/src/types/theme.ts +32 -0
  69. package/src/types.ts +152 -16
  70. package/src/ui.detached-panel.test.ts +1 -1
  71. package/src/ui.suggest-replies.test.ts +1066 -1
  72. package/src/ui.ts +268 -20
  73. package/src/utils/artifact-file.test.ts +1 -1
  74. package/src/utils/code-generators.test.ts +40 -0
  75. package/src/utils/code-generators.ts +22 -0
  76. package/src/utils/config-merge.test.ts +24 -0
  77. package/src/utils/icons.test.ts +26 -0
  78. package/src/utils/icons.ts +8 -0
  79. package/src/utils/theme.test.ts +79 -0
  80. package/src/utils/tokens.ts +64 -0
  81. package/dist/chunk-MMUPR2JW.js +0 -1
@@ -339,6 +339,14 @@ interface ReasoningBubbleTokens {
339
339
  interface ComposerChromeTokens {
340
340
  /** Box-shadow on the composer form (raw CSS, e.g. `none`). */
341
341
  shadow: string;
342
+ /** Inner padding of the composer form (raw CSS shorthand). @default "0.75rem 1rem" */
343
+ padding?: string;
344
+ /** Gap between the textarea row and the actions row. @default "0.5rem" */
345
+ gap?: string;
346
+ /** Composer textarea font-size. @default "0.875rem" */
347
+ fontSize?: string;
348
+ /** Composer textarea line-height. @default "1.25rem" */
349
+ lineHeight?: string;
342
350
  }
343
351
  /** Artifact toolbar chrome. */
344
352
  interface ArtifactToolbarTokens {
@@ -488,6 +496,26 @@ interface ScrollToBottomTokens extends ComponentTokenSet {
488
496
  fontSize?: string;
489
497
  iconSize?: string;
490
498
  }
499
+ /** Visual tokens shared by one suggestion presentation variant. */
500
+ interface SuggestionVariantTokens extends ComponentTokenSet {
501
+ gap?: string;
502
+ minHeight?: string;
503
+ fontSize?: string;
504
+ lineHeight?: string;
505
+ iconSize?: string;
506
+ hoverBackground?: TokenReference<'color'>;
507
+ hoverForeground?: TokenReference<'color'>;
508
+ hoverBorder?: TokenReference<'color'>;
509
+ pressedBackground?: TokenReference<'color'>;
510
+ focusRing?: TokenReference<'color'>;
511
+ disabledOpacity?: string;
512
+ }
513
+ /** Starter and follow-up suggestion chrome. */
514
+ interface SuggestionTokens {
515
+ chip: SuggestionVariantTokens;
516
+ card: SuggestionVariantTokens;
517
+ list: SuggestionVariantTokens;
518
+ }
491
519
  /** Toggle group chrome (used by createToggleGroup). */
492
520
  interface ToggleGroupTokens {
493
521
  /** Gap between toggle buttons. Default: 0 (connected). */
@@ -518,6 +546,8 @@ interface ComponentTokens {
518
546
  labelButton?: LabelButtonTokens;
519
547
  /** Scroll-to-bottom indicator styling tokens. */
520
548
  scrollToBottom?: ScrollToBottomTokens;
549
+ /** Starter prompt and follow-up suggestion styling tokens. */
550
+ suggestion?: SuggestionTokens;
521
551
  /** Toggle group styling tokens. */
522
552
  toggleGroup?: ToggleGroupTokens;
523
553
  /** Artifact toolbar, tab strip, and pane chrome. */
@@ -559,6 +589,40 @@ type DeepPartial<T> = T extends object ? {
559
589
  [P in keyof T]?: DeepPartial<T[P]>;
560
590
  } : T;
561
591
 
592
+ type AgentWidgetTransformSuggestionsContext = {
593
+ /**
594
+ * Fresh copy of the suggestions entering this plugin, already normalized:
595
+ * shorthand strings expanded and the effective send/fill behavior resolved.
596
+ */
597
+ suggestions: AgentWidgetResolvedSuggestion[];
598
+ surface: AgentWidgetSuggestionSurface;
599
+ source: AgentWidgetSuggestionSource;
600
+ config: AgentWidgetConfig;
601
+ };
602
+ type AgentWidgetRenderSuggestionContext = {
603
+ /** Fully normalized suggestion, including the effective send/fill behavior. */
604
+ suggestion: AgentWidgetResolvedSuggestion;
605
+ index: number;
606
+ surface: AgentWidgetSuggestionSurface;
607
+ source: AgentWidgetSuggestionSource;
608
+ variant: AgentWidgetSuggestionVariant;
609
+ streaming: boolean;
610
+ config: AgentWidgetConfig;
611
+ /** Build Persona's standard chip, card, or list item. */
612
+ defaultRenderer: () => HTMLElement;
613
+ /**
614
+ * Run the normal selection pipeline: DOM event, plugin selection hooks, then
615
+ * send or fill. Custom renderers should call this instead of sending directly.
616
+ */
617
+ select: () => void;
618
+ };
619
+ type AgentWidgetSuggestionSelectContext = {
620
+ suggestion: AgentWidgetResolvedSuggestion;
621
+ surface: AgentWidgetSuggestionSurface;
622
+ source: AgentWidgetSuggestionSource;
623
+ variant: AgentWidgetSuggestionVariant;
624
+ config: AgentWidgetConfig;
625
+ };
562
626
  /**
563
627
  * Plugin interface for customizing widget components
564
628
  */
@@ -571,6 +635,25 @@ interface AgentWidgetPlugin {
571
635
  * Optional priority (higher = runs first). Default: 0
572
636
  */
573
637
  priority?: number;
638
+ /**
639
+ * Transform, filter, enrich, or reorder suggestions. Hooks receive normalized
640
+ * items and compose in plugin priority order; the return value may use the
641
+ * loose shape (string shorthand included) and is re-normalized before the next
642
+ * hook. A per-item `behavior` set here survives. `maxItems` caps the list
643
+ * after the full chain. Return an empty array to hide the surface.
644
+ */
645
+ transformSuggestions?: (context: AgentWidgetTransformSuggestionsContext) => AgentWidgetSuggestion[];
646
+ /**
647
+ * Render one starter or follow-up suggestion. Return null to use Persona's
648
+ * default chip/card/list renderer. Call `select()` from custom interaction
649
+ * controls to preserve events, selection hooks, and send/fill behavior.
650
+ */
651
+ renderSuggestion?: (context: AgentWidgetRenderSuggestionContext) => HTMLElement | null;
652
+ /**
653
+ * Observe or intercept a suggestion selection. Return false to cancel the
654
+ * built-in send/fill action. Hooks run in plugin priority order.
655
+ */
656
+ onSuggestionSelect?: (context: AgentWidgetSuggestionSelectContext) => void | boolean;
574
657
  /**
575
658
  * Custom renderer for message bubbles
576
659
  * Return null to use default renderer
@@ -1080,7 +1163,24 @@ type RuntypeExecutionStreamEvent = ({
1080
1163
  type: "source";
1081
1164
  url?: string;
1082
1165
  [key: string]: unknown;
1166
+ } | {
1167
+ executionId: string;
1168
+ iteration?: number;
1169
+ seq: number;
1170
+ state: Record<string, unknown>;
1171
+ type: "state_snapshot";
1083
1172
  } | ({
1173
+ executionId: string;
1174
+ iteration?: number;
1175
+ patch: Array<{
1176
+ from?: string;
1177
+ op: "add" | "remove" | "replace" | "move" | "copy" | "test";
1178
+ path: string;
1179
+ value?: unknown;
1180
+ }>;
1181
+ seq: number;
1182
+ type: "state_delta";
1183
+ }) | ({
1084
1184
  executionId: string;
1085
1185
  hiddenParameterNames?: Array<string>;
1086
1186
  iteration?: number;
@@ -1322,6 +1422,7 @@ declare const LUCIDE_ICONS: {
1322
1422
  readonly plus: IconNode;
1323
1423
  readonly minus: IconNode;
1324
1424
  readonly pencil: IconNode;
1425
+ readonly "pen-line": IconNode;
1325
1426
  readonly trash: IconNode;
1326
1427
  readonly "trash-2": IconNode;
1327
1428
  readonly save: IconNode;
@@ -1364,11 +1465,13 @@ declare const LUCIDE_ICONS: {
1364
1465
  readonly folder: IconNode;
1365
1466
  readonly "folder-open": IconNode;
1366
1467
  readonly files: IconNode;
1468
+ readonly "chart-column": IconNode;
1367
1469
  readonly sparkles: IconNode;
1368
1470
  readonly zap: IconNode;
1369
1471
  readonly sun: IconNode;
1370
1472
  readonly moon: IconNode;
1371
1473
  readonly flag: IconNode;
1474
+ readonly lightbulb: IconNode;
1372
1475
  readonly monitor: IconNode;
1373
1476
  readonly smartphone: IconNode;
1374
1477
  };
@@ -3327,10 +3430,13 @@ type AgentWidgetFeatureFlags = {
3327
3430
  */
3328
3431
  askUserQuestion?: AgentWidgetAskUserQuestionFeature;
3329
3432
  /**
3330
- * Built-in `suggest_replies` quick-reply chips. When the assistant invokes
3331
- * the tool, the widget shows the suggestions as tappable chips above the
3332
- * composer (reusing the suggestion-chips surface) and immediately resumes
3333
- * the execution: fire-and-forget, no user input awaited.
3433
+ * Built-in `suggest_replies` follow-ups. When the assistant invokes the
3434
+ * tool, the widget shows the suggestions using `suggestions.followUps` and
3435
+ * immediately resumes the execution: fire-and-forget, no user input awaited.
3436
+ *
3437
+ * @deprecated Both keys moved to `suggestions.followUps`: use
3438
+ * `suggestions.followUps.enabled` and `suggestions.followUps.expose`. This
3439
+ * alias keeps working per key, with `suggestions.followUps` winning.
3334
3440
  */
3335
3441
  suggestReplies?: AgentWidgetSuggestRepliesFeature;
3336
3442
  };
@@ -3375,11 +3481,12 @@ type WidgetPreferenceSlice = {
3375
3481
  };
3376
3482
  };
3377
3483
  /**
3378
- * Feature config for the built-in `suggest_replies` quick-reply chips.
3379
- * Chips render in the existing suggestions slot above the composer and are
3380
- * styled by the widget-level `suggestionChipsConfig`. A tapped chip is sent
3381
- * verbatim as the user's next message; chips clear once any user message
3382
- * follows them.
3484
+ * Feature config for the built-in `suggest_replies` follow-ups.
3485
+ *
3486
+ * @deprecated Both keys moved to `suggestions.followUps`
3487
+ * (`suggestions.followUps.enabled` / `suggestions.followUps.expose`), which
3488
+ * also owns presentation, placement, and send/fill behavior. Resolution is
3489
+ * per key with `suggestions.followUps` winning; removal waits for 5.0.
3383
3490
  */
3384
3491
  type AgentWidgetSuggestRepliesFeature = {
3385
3492
  /**
@@ -3387,14 +3494,18 @@ type AgentWidgetSuggestRepliesFeature = {
3387
3494
  * renders as a regular tool bubble and is NOT auto-resumed: only set this
3388
3495
  * with no server-side `suggest_replies` declaration, or the execution
3389
3496
  * parks awaiting a resume that never comes.
3497
+ * @deprecated Use `suggestions.followUps.enabled`.
3390
3498
  */
3391
3499
  enabled?: boolean;
3392
3500
  /**
3393
3501
  * Advertise the built-in `suggest_replies` tool to the agent on every
3394
3502
  * dispatch via `clientTools[]`: no server-side `runtimeTools` declaration
3395
- * needed. Defaults to `false`: flows that already declare the tool via
3396
- * `runtimeTools` would otherwise present it to the model twice. Ignored
3397
- * when `enabled` is `false`.
3503
+ * needed. Defaults to `false`. Declare the tool in one place: the API
3504
+ * dedupes a double declaration by name with `clientTools[]` winning, so the
3505
+ * model still sees exactly one tool, but the widget's description and schema
3506
+ * win and the effective tool type becomes `local` (the execution pauses and
3507
+ * the widget auto-resumes it). Ignored when `enabled` is `false`.
3508
+ * @deprecated Use `suggestions.followUps.expose`.
3398
3509
  */
3399
3510
  expose?: boolean;
3400
3511
  };
@@ -3464,10 +3575,13 @@ type AgentWidgetAskUserQuestionFeature = {
3464
3575
  * matching {@link AskUserQuestionPayload}; when the model calls it, the
3465
3576
  * existing answer-pill sheet renders and the answer resumes the execution.
3466
3577
  *
3467
- * Defaults to `false`: flows that already declare `ask_user_question` via
3468
- * `runtimeTools` would otherwise present the tool to the model twice.
3469
- * Ignored when `enabled` is `false`: never offer the agent a question
3470
- * tool the widget can't render an answer UI for.
3578
+ * Defaults to `false`. Declare the tool in one place: the API dedupes a
3579
+ * double declaration by name with `clientTools[]` winning, so the model
3580
+ * still sees exactly one tool, but the widget's description and schema win
3581
+ * and the effective tool type becomes `local` (the execution pauses and the
3582
+ * widget resumes it with the user's answer). Ignored when `enabled` is
3583
+ * `false`: never offer the agent a question tool the widget can't render an
3584
+ * answer UI for.
3471
3585
  */
3472
3586
  expose?: boolean;
3473
3587
  /** Slide-in animation duration in ms. Defaults to 180. */
@@ -3940,6 +4054,10 @@ type AgentWidgetSendButtonConfig = {
3940
4054
  paddingY?: string;
3941
4055
  iconText?: string;
3942
4056
  iconName?: string;
4057
+ /** Icon glyph box in icon mode, e.g. "20px". Defaults to half of `size`. */
4058
+ iconSize?: string;
4059
+ /** Stroke width for the icon glyph, in viewBox units. Default 2. */
4060
+ iconStrokeWidth?: number;
3943
4061
  useIcon?: boolean;
3944
4062
  tooltipText?: string;
3945
4063
  showTooltip?: boolean;
@@ -4663,6 +4781,109 @@ type AgentWidgetSuggestionChipsConfig = {
4663
4781
  paddingX?: string;
4664
4782
  paddingY?: string;
4665
4783
  };
4784
+ /** A suggested next action shown to the user. Strings remain supported as shorthand. */
4785
+ type AgentWidgetSuggestion = string | {
4786
+ /** Stable analytics / DOM identity. Falls back to the prompt or label. */
4787
+ id?: string;
4788
+ /** Concise visible action label. */
4789
+ label: string;
4790
+ /** Text placed in the composer or sent. Defaults to `label`. */
4791
+ prompt?: string;
4792
+ /** Optional supporting copy, most useful with the `card` variant. */
4793
+ description?: string;
4794
+ /** Optional icon from Persona's bundled Lucide registry. */
4795
+ icon?: IconName;
4796
+ /**
4797
+ * CSS color for this item's glyph. Tints the icon only: label, border,
4798
+ * and background stay neutral. Ignored without an `icon`.
4799
+ */
4800
+ iconColor?: string;
4801
+ /** Override the surface's click behavior for this item. */
4802
+ behavior?: AgentWidgetSuggestionBehavior;
4803
+ /** Visually promote one high-confidence action. */
4804
+ emphasis?: "default" | "primary";
4805
+ };
4806
+ type AgentWidgetSuggestionBehavior = "send" | "fill";
4807
+ type AgentWidgetSuggestionVariant = "chip" | "card" | "list";
4808
+ type AgentWidgetSuggestionSurface = "starter" | "followUp";
4809
+ /**
4810
+ * Who produced the rendered suggestions: static config, the agent's
4811
+ * `suggest_replies` tool, or `controller.setFollowUpSuggestions`.
4812
+ */
4813
+ type AgentWidgetSuggestionSource = "config" | "agent" | "host";
4814
+ /**
4815
+ * A suggestion after Persona has normalized shorthand strings and resolved the
4816
+ * effective click behavior. Plugin hooks receive this stable shape.
4817
+ */
4818
+ type AgentWidgetResolvedSuggestion = {
4819
+ id: string;
4820
+ label: string;
4821
+ prompt: string;
4822
+ description?: string;
4823
+ icon?: IconName;
4824
+ /** CSS color for the glyph only; never the label, border, or background. */
4825
+ iconColor?: string;
4826
+ behavior: AgentWidgetSuggestionBehavior;
4827
+ emphasis: "default" | "primary";
4828
+ };
4829
+ /** Presentation keys shared by every suggestion surface. */
4830
+ type AgentWidgetSuggestionSurfaceConfig = {
4831
+ /** Item density. Defaults to `card` for starters and `chip` for follow-ups. */
4832
+ variant?: AgentWidgetSuggestionVariant;
4833
+ /** Default click behavior, overridable per item. Defaults to `send`. */
4834
+ behavior?: AgentWidgetSuggestionBehavior;
4835
+ /**
4836
+ * Layout for items past the surface width. Defaults to `wrap` for starters
4837
+ * and `scroll` for follow-ups. Applies to the `chip` variant only; the
4838
+ * `card` and `list` layouts manage their own stacking.
4839
+ */
4840
+ overflow?: "scroll" | "wrap";
4841
+ /** Maximum visible items. Defaults to 4. */
4842
+ maxItems?: number;
4843
+ };
4844
+ type AgentWidgetStarterSuggestionsConfig = AgentWidgetSuggestionSurfaceConfig & {
4845
+ /** Suggestions shown before the first user message. */
4846
+ items?: AgentWidgetSuggestion[];
4847
+ /**
4848
+ * `auto` uses the welcome surface when the welcome card renders and the
4849
+ * composer otherwise. Explicit values are literal: `welcome` renders
4850
+ * nothing when the welcome card is hidden. Defaults to `auto`.
4851
+ */
4852
+ placement?: "auto" | "welcome" | "composer";
4853
+ };
4854
+ type AgentWidgetFollowUpSuggestionsConfig = AgentWidgetSuggestionSurfaceConfig & {
4855
+ /**
4856
+ * Enable the built-in `suggest_replies` follow-ups. Defaults to true. When
4857
+ * false, `suggest_replies` renders as a regular tool bubble and is NOT
4858
+ * auto-resumed: only set this with no server-side `suggest_replies`
4859
+ * declaration, or the execution parks awaiting a resume that never comes.
4860
+ */
4861
+ enabled?: boolean;
4862
+ /**
4863
+ * Advertise the built-in `suggest_replies` tool to the agent on every
4864
+ * dispatch via `clientTools[]`: no server-side `runtimeTools` declaration
4865
+ * needed. Defaults to `false`. Declare the tool in one place: the API
4866
+ * dedupes a double declaration by name with `clientTools[]` winning, so
4867
+ * the model still sees exactly one tool, but the widget's description and
4868
+ * schema win and the effective tool type becomes `local` (the execution
4869
+ * pauses and the widget auto-resumes it). Ignored when `enabled` is
4870
+ * `false`.
4871
+ */
4872
+ expose?: boolean;
4873
+ /**
4874
+ * `auto` places follow-ups after the transcript in regular panels and above
4875
+ * the composer in composer-bar mode. Defaults to `auto`.
4876
+ */
4877
+ placement?: "auto" | "after-message" | "composer";
4878
+ };
4879
+ /**
4880
+ * Structured suggestions configuration. The legacy `suggestionChips` and
4881
+ * `suggestionChipsConfig` fields remain supported for backwards compatibility.
4882
+ */
4883
+ type AgentWidgetSuggestionsConfig = {
4884
+ starters?: AgentWidgetStarterSuggestionsConfig;
4885
+ followUps?: AgentWidgetFollowUpSuggestionsConfig;
4886
+ };
4666
4887
  /**
4667
4888
  * Interface for pluggable stream parsers that extract text from streaming responses.
4668
4889
  * Parsers handle incremental parsing to extract text values from structured formats (JSON, XML, etc.).
@@ -5844,7 +6065,11 @@ type AgentWidgetConfig = {
5844
6065
  * with `initialArtifacts`.
5845
6066
  */
5846
6067
  initialSelectedArtifactId?: string | null;
6068
+ /** Rich starter and follow-up suggestion surfaces. */
6069
+ suggestions?: AgentWidgetSuggestionsConfig;
6070
+ /** @deprecated Prefer `suggestions.starters.items`. */
5847
6071
  suggestionChips?: string[];
6072
+ /** @deprecated Prefer semantic tokens under `theme.components.suggestion`. */
5848
6073
  suggestionChipsConfig?: AgentWidgetSuggestionChipsConfig;
5849
6074
  debug?: boolean;
5850
6075
  formEndpoint?: string;
@@ -6880,7 +7105,7 @@ declare const MOCK_WORKSPACE_CONTENT = "\n <div class=\"preview-workspace-con
6880
7105
  * using the exported templates and shell CSS utilities.
6881
7106
  */
6882
7107
  declare function buildSrcdoc(mountId: string, shellMode: 'light' | 'dark', docked: boolean, widgetCssPath: string): string;
6883
- type PreviewScene = 'home' | 'conversation' | 'minimized' | 'artifact';
7108
+ type PreviewScene = 'home' | 'conversation' | 'follow-ups' | 'minimized' | 'artifact';
6884
7109
  type PreviewTranscriptEntryPreset = 'user-message' | 'assistant-message' | 'assistant-code-block' | 'assistant-markdown-table' | 'assistant-image' | 'reasoning-streaming' | 'reasoning-complete' | 'tool-running' | 'tool-complete' | 'approval-request';
6885
7110
  declare function getPreviewTranscriptPresetLabel(preset: PreviewTranscriptEntryPreset): string;
6886
7111
  declare function createPreviewTranscriptEntry(preset: PreviewTranscriptEntryPreset, index?: number): AgentWidgetMessage;