@pstdio/ui 0.40.0 → 0.42.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 (108) hide show
  1. package/dist/{MermaidComponent-81jr28u4.js → MermaidComponent-D7vhkpka.js} +3 -3
  2. package/dist/{MermaidComponent-81jr28u4.js.map → MermaidComponent-D7vhkpka.js.map} +1 -1
  3. package/dist/alert-MQ47wy7f.js +388 -0
  4. package/dist/alert-MQ47wy7f.js.map +1 -0
  5. package/dist/chat-ui.d.ts +129 -23
  6. package/dist/chat-ui.js +2596 -1591
  7. package/dist/chat-ui.js.map +1 -1
  8. package/dist/{types-DWA3enV6.d.ts → collection-view-fields-D3cysHNT.d.ts} +87 -37
  9. package/dist/collection-view-grouping-D4nZk8-3.js +90 -0
  10. package/dist/collection-view-grouping-D4nZk8-3.js.map +1 -0
  11. package/dist/collection-view-search-CpjJy76w.js +1973 -0
  12. package/dist/collection-view-search-CpjJy76w.js.map +1 -0
  13. package/dist/collection-view.d.ts +4 -0
  14. package/dist/collection-view.js +2 -0
  15. package/dist/{data-table-stats-row-CpRe_xK2.js → data-table-stats-row-64magT2g.js} +2 -2
  16. package/dist/{data-table-stats-row-CpRe_xK2.js.map → data-table-stats-row-64magT2g.js.map} +1 -1
  17. package/dist/data-table.d.ts +29 -7
  18. package/dist/data-table.js +1043 -878
  19. package/dist/data-table.js.map +1 -1
  20. package/dist/diff-bubble-DewUd_2w.js +61 -0
  21. package/dist/diff-bubble-DewUd_2w.js.map +1 -0
  22. package/dist/{diff-drawer-45rpk3aq.js → diff-drawer-IYpQ-QQK.js} +264 -242
  23. package/dist/diff-drawer-IYpQ-QQK.js.map +1 -0
  24. package/dist/diff-viewer-C-0VAt9P.js +574 -0
  25. package/dist/diff-viewer-C-0VAt9P.js.map +1 -0
  26. package/dist/diff.d.ts +11 -0
  27. package/dist/diff.js +107 -98
  28. package/dist/diff.js.map +1 -1
  29. package/dist/display-sort-control-f3rbILsV.js +588 -0
  30. package/dist/display-sort-control-f3rbILsV.js.map +1 -0
  31. package/dist/drop-indicator-HjlBSIeV.js +27 -0
  32. package/dist/drop-indicator-HjlBSIeV.js.map +1 -0
  33. package/dist/edit-mode-data-table-DnMB2jiy.js +1449 -0
  34. package/dist/edit-mode-data-table-DnMB2jiy.js.map +1 -0
  35. package/dist/host-storage-BIo5azql.js +31 -0
  36. package/dist/host-storage-BIo5azql.js.map +1 -0
  37. package/dist/host-storage-J0089Hyk.d.ts +17 -0
  38. package/dist/{slider-hwHYe98I.js → icon-options-Tt6Wzhtv.js} +86 -201
  39. package/dist/icon-options-Tt6Wzhtv.js.map +1 -0
  40. package/dist/{index-Bfddrlz8.d.ts → index-B79hwNcB.d.ts} +66 -14
  41. package/dist/index-CKsd23jv.d.ts +80 -0
  42. package/dist/{index-CbtbcvKm.d.ts → index-DlmvvQ6x.d.ts} +1 -1
  43. package/dist/index-ICoad2I_.d.ts +282 -0
  44. package/dist/index.d.ts +63 -22
  45. package/dist/index.js +1149 -1054
  46. package/dist/index.js.map +1 -1
  47. package/dist/kanban-renderer.d.ts +3 -326
  48. package/dist/kanban-renderer.js +980 -596
  49. package/dist/kanban-renderer.js.map +1 -1
  50. package/dist/list-row-Z4SHkseA.js +1195 -0
  51. package/dist/list-row-Z4SHkseA.js.map +1 -0
  52. package/dist/markdown-editor-Dd4mor7l.js +3236 -0
  53. package/dist/markdown-editor-Dd4mor7l.js.map +1 -0
  54. package/dist/{mermaid-renderer-DImi0fDp.js → mermaid-renderer-0PmNkOXI.js} +29 -29
  55. package/dist/mermaid-renderer-0PmNkOXI.js.map +1 -0
  56. package/dist/mermaid.js +1 -1
  57. package/dist/number-input-7K66wnSC.js +63 -0
  58. package/dist/number-input-7K66wnSC.js.map +1 -0
  59. package/dist/{param-editor-BQd4AOUP.js → param-editor-Dnix-fJo.js} +2 -2
  60. package/dist/{param-editor-BQd4AOUP.js.map → param-editor-Dnix-fJo.js.map} +1 -1
  61. package/dist/{param-editor-field-BJ_rLUnV.js → param-editor-field-B3vLST-B.js} +1436 -1427
  62. package/dist/param-editor-field-B3vLST-B.js.map +1 -0
  63. package/dist/param-editor.js +4 -3
  64. package/dist/prism-OG4H7Hu4.js +334 -0
  65. package/dist/prism-OG4H7Hu4.js.map +1 -0
  66. package/dist/queued-follow-up-Bj_vtMgd.js +208 -0
  67. package/dist/queued-follow-up-Bj_vtMgd.js.map +1 -0
  68. package/dist/{resource-badge-95WPVlZf.d.ts → resource-badge-nOWPqxFU.d.ts} +1 -0
  69. package/dist/rich-text-BgEnAHr2.js +1160 -0
  70. package/dist/rich-text-BgEnAHr2.js.map +1 -0
  71. package/dist/rich-text.d.ts +2 -2
  72. package/dist/rich-text.js +4 -2
  73. package/dist/style.css +1 -1
  74. package/dist/terminal.d.ts +5 -63
  75. package/dist/terminal.js +102 -122
  76. package/dist/terminal.js.map +1 -1
  77. package/dist/{theme-CbmSEbRF.js → theme-CMJdH59Z.js} +589 -265
  78. package/dist/theme-CMJdH59Z.js.map +1 -0
  79. package/dist/theme-kKuLN2jb.js +80 -0
  80. package/dist/theme-kKuLN2jb.js.map +1 -0
  81. package/dist/theme-preference-BV4cbJNB.js +115 -0
  82. package/dist/theme-preference-BV4cbJNB.js.map +1 -0
  83. package/dist/theme.js +3 -2
  84. package/dist/tree-list-jarhD31R.js +1652 -0
  85. package/dist/tree-list-jarhD31R.js.map +1 -0
  86. package/dist/use-virtualizer-uj43XjBp.js +10 -0
  87. package/dist/use-virtualizer-uj43XjBp.js.map +1 -0
  88. package/dist/{workspace-badge-Brm3Xr3m.d.ts → workspace-badge-BKtB805G.d.ts} +5 -1
  89. package/package.json +8 -4
  90. package/dist/diff-bubble-DZsarmSG.js +0 -61
  91. package/dist/diff-bubble-DZsarmSG.js.map +0 -1
  92. package/dist/diff-drawer-45rpk3aq.js.map +0 -1
  93. package/dist/diff-viewer-BP_mI6Wx.js +0 -558
  94. package/dist/diff-viewer-BP_mI6Wx.js.map +0 -1
  95. package/dist/list-row-uqD-q4gv.js +0 -1018
  96. package/dist/list-row-uqD-q4gv.js.map +0 -1
  97. package/dist/mermaid-renderer-DImi0fDp.js.map +0 -1
  98. package/dist/param-editor-field-BJ_rLUnV.js.map +0 -1
  99. package/dist/prism-BStPsJSB.js +0 -658
  100. package/dist/prism-BStPsJSB.js.map +0 -1
  101. package/dist/rich-text-VYAmEigU.js +0 -6979
  102. package/dist/rich-text-VYAmEigU.js.map +0 -1
  103. package/dist/slider-hwHYe98I.js.map +0 -1
  104. package/dist/theme-CbmSEbRF.js.map +0 -1
  105. package/dist/theme-preference-pzfuK5cH.js +0 -101
  106. package/dist/theme-preference-pzfuK5cH.js.map +0 -1
  107. package/dist/tree-list-BNZwjQZA.js +0 -1616
  108. package/dist/tree-list-BNZwjQZA.js.map +0 -1
package/dist/chat-ui.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { n as ResourceBadgeProps, r as ScrollArea$1 } from "./resource-badge-95WPVlZf.js";
2
- import { T as ReferenceItem } from "./index-Bfddrlz8.js";
1
+ import { n as ResourceBadgeProps, r as ScrollArea$1 } from "./resource-badge-nOWPqxFU.js";
2
+ import { d as ChatLinkCandidate, f as ChatLinkHandler, j as PromptCommand, k as PromptSelectionSnapshot, m as parseChatLink, p as ChatLinkProps } from "./index-B79hwNcB.js";
3
3
  import { HTMLChakraProps, IconButtonProps, RecipeVariantProps } from "@chakra-ui/react";
4
4
  import { StickToBottom } from "use-stick-to-bottom";
5
5
  import { ReactNode } from "react";
@@ -10,19 +10,23 @@ type ConversationScrollButtonProps = IconButtonProps;
10
10
  export declare const ChatPrimitives: {
11
11
  readonly Root: import("@chakra-ui/react").ChakraComponent<import("react").ElementType, {
12
12
  resize?: import("use-stick-to-bottom").Animation | undefined;
13
+ is?: string | undefined | undefined;
13
14
  onChange?: import("react").ChangeEventHandler<HTMLDivElement, Element> | undefined;
14
15
  onError?: import("react").ReactEventHandler<HTMLDivElement> | undefined;
15
16
  onSubmit?: import("react").SubmitEventHandler<HTMLDivElement> | undefined;
16
- content?: string | undefined | undefined;
17
+ resource?: string | undefined | undefined;
18
+ id?: string | undefined | undefined;
19
+ children: ((context: import("use-stick-to-bottom").StickToBottomContext) => import("react").ReactNode) | import("react").ReactNode;
20
+ slot?: string | undefined | undefined;
21
+ style?: import("react").CSSProperties | undefined;
22
+ title?: string | undefined | undefined;
17
23
  color?: string | undefined | undefined;
24
+ content?: string | undefined | undefined;
18
25
  translate?: "yes" | "no" | undefined | undefined;
19
26
  initial?: (import("use-stick-to-bottom").Animation | boolean) | undefined;
20
27
  hidden?: boolean | undefined | undefined;
21
- popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
22
- radioGroup?: string | undefined | undefined;
23
- slot?: string | undefined | undefined;
24
- style?: import("react").CSSProperties | undefined;
25
- title?: string | undefined | undefined;
28
+ "aria-roledescription"?: string | undefined | undefined;
29
+ role?: import("react").AriaRole | undefined;
26
30
  defaultChecked?: boolean | undefined | undefined;
27
31
  defaultValue?: string | number | readonly string[] | undefined;
28
32
  suppressContentEditableWarning?: boolean | undefined | undefined;
@@ -36,19 +40,17 @@ export declare const ChatPrimitives: {
36
40
  dir?: string | undefined | undefined;
37
41
  draggable?: (boolean | "true" | "false") | undefined;
38
42
  enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
39
- id?: string | undefined | undefined;
40
43
  lang?: string | undefined | undefined;
41
44
  nonce?: string | undefined | undefined;
42
45
  spellCheck?: (boolean | "true" | "false") | undefined;
43
46
  tabIndex?: number | undefined | undefined;
44
- role?: import("react").AriaRole | undefined;
47
+ radioGroup?: string | undefined | undefined;
45
48
  about?: string | undefined | undefined;
46
49
  datatype?: string | undefined | undefined;
47
50
  inlist?: any;
48
51
  prefix?: string | undefined | undefined;
49
52
  property?: string | undefined | undefined;
50
53
  rel?: string | undefined | undefined;
51
- resource?: string | undefined | undefined;
52
54
  rev?: string | undefined | undefined;
53
55
  typeof?: string | undefined | undefined;
54
56
  vocab?: string | undefined | undefined;
@@ -62,11 +64,11 @@ export declare const ChatPrimitives: {
62
64
  results?: number | undefined | undefined;
63
65
  security?: string | undefined | undefined;
64
66
  unselectable?: "on" | "off" | undefined | undefined;
67
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
65
68
  popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
66
69
  popoverTarget?: string | undefined | undefined;
67
70
  inert?: boolean | undefined | undefined;
68
71
  inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
69
- is?: string | undefined | undefined;
70
72
  exportparts?: string | undefined | undefined;
71
73
  part?: string | undefined | undefined;
72
74
  "aria-activedescendant"?: string | undefined | undefined;
@@ -110,7 +112,6 @@ export declare const ChatPrimitives: {
110
112
  "aria-readonly"?: (boolean | "true" | "false") | undefined;
111
113
  "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
112
114
  "aria-required"?: (boolean | "true" | "false") | undefined;
113
- "aria-roledescription"?: string | undefined | undefined;
114
115
  "aria-rowcount"?: number | undefined | undefined;
115
116
  "aria-rowindex"?: number | undefined | undefined;
116
117
  "aria-rowindextext"?: string | undefined | undefined;
@@ -122,7 +123,6 @@ export declare const ChatPrimitives: {
122
123
  "aria-valuemin"?: number | undefined | undefined;
123
124
  "aria-valuenow"?: number | undefined | undefined;
124
125
  "aria-valuetext"?: string | undefined | undefined;
125
- children: ((context: import("use-stick-to-bottom").StickToBottomContext) => import("react").ReactNode) | import("react").ReactNode;
126
126
  dangerouslySetInnerHTML?: {
127
127
  __html: string | TrustedHTML;
128
128
  } | undefined | undefined;
@@ -451,13 +451,37 @@ interface ChatInputQuestion {
451
451
  }
452
452
  interface ChatInputQuestionPrompt {
453
453
  questions: ChatInputQuestion[];
454
+ callId?: string;
455
+ /** Async requests open from their chat bubble and preselect their first offered options. */
456
+ delivery?: "async";
454
457
  }
455
458
  interface ChatInputQuestionResponse {
456
459
  answers: string[][];
460
+ callId?: string;
461
+ }
462
+ //#endregion
463
+ //#region src/components/chat-ui/components/composer-decision.d.ts
464
+ /** A native decision occupies the composer without submitting the saved draft. */
465
+ interface ComposerDecision {
466
+ id: string;
467
+ controls?: ReactNode;
468
+ model?: string;
469
+ pending?: boolean;
470
+ actions: {
471
+ id: string;
472
+ label: string;
473
+ variant: "primary" | "subtle" | "ghost";
474
+ disabled?: boolean;
475
+ }[];
476
+ onAction: (actionId: string) => void | Promise<void>;
457
477
  }
458
478
  //#endregion
459
479
  //#region src/components/chat-ui/components/chat-input.d.ts
460
480
  interface ChatInputProps {
481
+ /**
482
+ * Serialized editor state for the text to show. The editor adopts it whenever its text differs
483
+ * from what the editor shows, so a host can pass its live draft. It is never echoed to `onChange`.
484
+ */
461
485
  defaultState: string;
462
486
  /** Plain-text prompts from the active conversation, newest first. */
463
487
  recentUserMessages?: string[];
@@ -476,15 +500,24 @@ interface ChatInputProps {
476
500
  onChange?: (text: string) => void;
477
501
  attachmentList?: ReactNode;
478
502
  actions?: ReactNode;
503
+ /** Secondary actions immediately before the submit button. */
504
+ submitActions?: ReactNode;
505
+ /** Attachment controls shown only while editing a message draft. */
506
+ attachmentActions?: ReactNode;
479
507
  attachedToTop?: boolean;
480
508
  /** Recede the resting border to border.subtle when nested inside a stronger shell (the workspace hub). */
481
509
  recessed?: boolean;
482
510
  questionPrompt?: ChatInputQuestionPrompt;
511
+ decision?: ComposerDecision;
483
512
  autoFocus?: boolean;
484
513
  focusSignal?: number;
485
514
  submitTitle?: string;
486
- references?: ReferenceItem[];
487
- onAddReference?: (resourceId: string, resourceType: ReferenceItem["resourceType"]) => void;
515
+ submitLabel?: string;
516
+ initialSelection?: PromptSelectionSnapshot;
517
+ onSelectionChange?: (selection: PromptSelectionSnapshot) => void;
518
+ onEditorStateChange?: (text: string, state: string) => void;
519
+ retainTextUntilAcknowledged?: boolean;
520
+ commands?: PromptCommand[];
488
521
  }
489
522
  export declare const ChatInput: (props: ChatInputProps) => import("react/jsx-runtime").JSX.Element;
490
523
  //#endregion
@@ -581,11 +614,20 @@ type SessionMessage = {
581
614
  };
582
615
  };
583
616
  type QueuedFollowUp = {
617
+ revision?: string;
618
+ model?: string | null;
619
+ params?: Record<string, string | boolean>;
620
+ steeringUnavailableReason?: string | null;
621
+ steeringDelivery?: {
622
+ id: string;
623
+ runStartedAt: string;
624
+ } | null;
584
625
  id: string;
585
626
  prompt: string;
586
627
  attachments?: Array<{
587
628
  id: string;
588
629
  name: string;
630
+ size?: number;
589
631
  mediaType?: string;
590
632
  url?: string;
591
633
  }>;
@@ -597,7 +639,7 @@ type QueuedFollowUpMoveDirection = "up" | "down";
597
639
  //#endregion
598
640
  //#region src/components/chat-ui/components/chat-panel.d.ts
599
641
  /** Full conversation shell for agent sessions, including messages, input, attachments, and host-provided slots. */
600
- interface ChatPanelProps {
642
+ interface ChatPanelProps extends ChatLinkProps {
601
643
  /** Stable conversation identity used to reset ready state when switching sessions. */
602
644
  conversationKey?: string;
603
645
  messages: SessionMessage[];
@@ -616,8 +658,11 @@ interface ChatPanelProps {
616
658
  onAttachFiles?: (files: File[]) => void;
617
659
  onAttachText?: (text: string) => void;
618
660
  onChatInputChange?: (text: string) => void;
619
- /** Extra controls rendered in the chat input toolbar (attach, model, params). */
661
+ /** Controls shared by the message and question toolbars (model, params). */
620
662
  actions?: ReactNode;
663
+ /** Attachment controls shown only while editing a message draft. */
664
+ attachmentActions?: ReactNode;
665
+ composerHeader?: ReactNode;
621
666
  attachedResources?: string[];
622
667
  onClearAttachments?: () => void;
623
668
  attachmentList?: ReactNode;
@@ -631,13 +676,28 @@ interface ChatPanelProps {
631
676
  /** Blocks sending while the editor stays usable, for example while no model is selected. */
632
677
  submitDisabled?: boolean;
633
678
  chatInputQuestionPrompt?: ChatInputQuestionPrompt;
679
+ composerDecision?: ComposerDecision;
634
680
  chatInputAutoFocus?: boolean;
635
681
  queuedFollowUps?: QueuedFollowUp[];
636
- onQueuedFollowUpUpdate?: (itemId: string, prompt: string) => void;
682
+ onQueuedFollowUpUpdate?: (itemId: string, prompt: string) => void | Promise<void>;
683
+ /** Submit the retained edit's settings and files as a new request. */
684
+ onQueuedFollowUpCreate?: (itemId: string, prompt: string) => void | Promise<void>;
685
+ /** Move the retained edit's settings and files into the normal draft before its text changes. */
686
+ onQueuedFollowUpRestoreDraft?: (itemId: string) => void;
687
+ /** Allow recovery only when the normal draft has no files or uploads and the host can transfer the edit. */
688
+ canRestoreQueuedEditToDraft?: boolean;
689
+ onQueuedFollowUpSelect?: (item: QueuedFollowUp | null) => void;
690
+ onQueuedFollowUpDiscard?: (itemId: string) => void;
691
+ onQueuedFollowUpSteer?: (item: QueuedFollowUp) => void | Promise<void>;
692
+ onQueuedFollowUpCombine?: (source: QueuedFollowUp, target: QueuedFollowUp) => void | Promise<void>;
693
+ queueSteeringUnavailableReason?: string | null;
694
+ unsavedQueueItemIds?: string[];
637
695
  onQueuedFollowUpRemove?: (itemId: string) => void;
638
- onQueuedFollowUpMove?: (itemId: string, direction: QueuedFollowUpMoveDirection, steps?: number) => void;
639
- chatInputReferences?: ReferenceItem[];
640
- onChatInputAddReference?: (resourceId: string, resourceType: ReferenceItem["resourceType"]) => void;
696
+ onQueuedFollowUpMove?: (itemId: string, direction: QueuedFollowUpMoveDirection, steps?: number, selection?: {
697
+ source: QueuedFollowUp;
698
+ items: QueuedFollowUp[];
699
+ }) => void;
700
+ chatInputCommands?: PromptCommand[];
641
701
  }
642
702
  export declare const ChatPanel: (props: ChatPanelProps) => import("react/jsx-runtime").JSX.Element;
643
703
  //#endregion
@@ -667,6 +727,52 @@ interface ConversationBrowseProps {
667
727
  */
668
728
  export declare const ConversationBrowse: (props: ConversationBrowseProps) => import("react/jsx-runtime").JSX.Element | null;
669
729
  //#endregion
730
+ //#region src/components/chat-ui/components/harness-controls.d.ts
731
+ interface HarnessAction {
732
+ id: string;
733
+ label: string;
734
+ icon?: string;
735
+ argument?: {
736
+ label: string;
737
+ value?: string;
738
+ };
739
+ }
740
+ interface HarnessMode {
741
+ id: string;
742
+ label: string;
743
+ description: string;
744
+ state: string;
745
+ indicator?: {
746
+ label: string;
747
+ tone: "neutral" | "info" | "success" | "warning" | "error";
748
+ };
749
+ tagText?: string;
750
+ closeActionId?: string;
751
+ confirmation?: {
752
+ id: string;
753
+ title: string;
754
+ actionId: string;
755
+ cancelLabel?: string;
756
+ };
757
+ actions: HarnessAction[];
758
+ }
759
+ interface LocalTag {
760
+ label: string;
761
+ description: string;
762
+ onClose: () => void;
763
+ closeLabel?: string;
764
+ }
765
+ interface HarnessControlsProps {
766
+ modes: HarnessMode[];
767
+ draftTag?: LocalTag;
768
+ sentTag?: LocalTag;
769
+ pending?: boolean;
770
+ unavailable?: boolean;
771
+ onRequestConfirmation?: (modeId: string) => void;
772
+ onAction: (modeId: string, actionId: string, argument?: string, modeSnapshot?: HarnessMode) => Promise<void>;
773
+ }
774
+ export declare const HarnessControls: (props: HarnessControlsProps) => import("react/jsx-runtime").JSX.Element;
775
+ //#endregion
670
776
  //#region src/components/chat-ui/components/send-button.d.ts
671
777
  interface SendButtonProps extends IconButtonProps {
672
778
  shortcut?: string;
@@ -697,5 +803,5 @@ export declare const ChatWorkspaceHub: (props: ChatWorkspaceHubProps) => import(
697
803
  //#region src/components/chat-ui/utils/editor-state.d.ts
698
804
  export declare const createSerializedPromptState: (input?: string) => string;
699
805
  //#endregion
700
- export type { AlertPart, AutoScrollProps, ChatInputProps, ChatInputQuestionPrompt, ChatInputQuestionResponse, ChatMessagePart, ConversationBrowseItem, ConversationContentProps, ConversationRootProps, ConversationScrollButtonProps, MessageContentProps, MessageRootProps, QueuedFollowUp, QueuedFollowUpMoveDirection, SendButtonProps, SessionMessage, SessionMessagePart, ToolPart };
806
+ export { type AlertPart, type AutoScrollProps, type ChatInputProps, type ChatInputQuestionPrompt, type ChatInputQuestionResponse, type ChatLinkCandidate, type ChatLinkHandler, type ChatLinkProps, type ChatMessagePart, type ComposerDecision, type ConversationBrowseItem, type ConversationContentProps, type ConversationRootProps, type ConversationScrollButtonProps, type HarnessControlsProps, type MessageContentProps, type MessageRootProps, type QueuedFollowUp, type QueuedFollowUpMoveDirection, type SendButtonProps, type SessionMessage, type SessionMessagePart, type ToolPart, parseChatLink };
701
807
  export {};