@mgamadeus/ddd-agents 0.0.0-stage → 0.1.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +14 -2
- package/dist/chat.js +5263 -0
- package/dist/chat.js.map +1 -0
- package/dist/chunks/AgentsConversationClientContext-C4T7g_Qk.js +22 -0
- package/dist/chunks/AgentsConversationClientContext-C4T7g_Qk.js.map +1 -0
- package/dist/chunks/ConversationMarkdown-W7NHglmL.js +399 -0
- package/dist/chunks/ConversationMarkdown-W7NHglmL.js.map +1 -0
- package/dist/chunks/WebSearchResultsConversationWidget-BvnLWHyi.js +5059 -0
- package/dist/chunks/WebSearchResultsConversationWidget-BvnLWHyi.js.map +1 -0
- package/dist/chunks/canvas-behaviours-BRFR1ALE.js +45 -0
- package/dist/chunks/canvas-behaviours-BRFR1ALE.js.map +1 -0
- package/dist/chunks/canvas-feature-flags-BmmxC3bz.js +11 -0
- package/dist/chunks/canvas-feature-flags-BmmxC3bz.js.map +1 -0
- package/dist/chunks/canvasBodies-9SuF6NAB.js +289 -0
- package/dist/chunks/canvasBodies-9SuF6NAB.js.map +1 -0
- package/dist/chunks/d3-7.6.1.min.js-DTmPafrl.js +6 -0
- package/dist/chunks/d3-7.6.1.min.js-DTmPafrl.js.map +1 -0
- package/dist/chunks/decide-canvas-open-Ct-wnNEJ.js +20 -0
- package/dist/chunks/decide-canvas-open-Ct-wnNEJ.js.map +1 -0
- package/dist/chunks/widget-image-readiness-signal-DeOuL89j.js +25 -0
- package/dist/chunks/widget-image-readiness-signal-DeOuL89j.js.map +1 -0
- package/dist/chunks/widget-name-resolver-DyIY6Zu4.js +9736 -0
- package/dist/chunks/widget-name-resolver-DyIY6Zu4.js.map +1 -0
- package/dist/chunks/withPollingChangeSubscription-BLDAWF-o.js +251 -0
- package/dist/chunks/withPollingChangeSubscription-BLDAWF-o.js.map +1 -0
- package/dist/client-testing.js +346 -0
- package/dist/client-testing.js.map +1 -0
- package/dist/client.js +16 -0
- package/dist/client.js.map +1 -0
- package/dist/contract.js +31 -0
- package/dist/contract.js.map +1 -0
- package/dist/image-render.js +334 -0
- package/dist/image-render.js.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/kit.js +13 -0
- package/dist/kit.js.map +1 -0
- package/dist/preview.js +733 -0
- package/dist/preview.js.map +1 -0
- package/dist/renderer.js +115 -0
- package/dist/renderer.js.map +1 -0
- package/dist/styles.css +6768 -0
- package/dist/types/chat/AgentChat/AgentChat.d.ts +37 -0
- package/dist/types/chat/AgentChatActivityHistory/AgentChatActivityHistory.d.ts +6 -0
- package/dist/types/chat/AgentChatActivityIndicator/AgentChatActivityIndicator.d.ts +8 -0
- package/dist/types/chat/CanvasPane/CanvasPane.d.ts +15 -0
- package/dist/types/chat/CanvasResizeHandle/CanvasResizeHandle.d.ts +10 -0
- package/dist/types/chat/CanvasResizeHandle/use-canvas-resize.d.ts +43 -0
- package/dist/types/chat/ConversationClosedBar/ConversationClosedBar.d.ts +10 -0
- package/dist/types/chat/ConversationErrorCard/ConversationErrorCard.d.ts +13 -0
- package/dist/types/chat/ConversationIntroCard/ConversationIntroCard.d.ts +10 -0
- package/dist/types/chat/ConversationLoadingStates.d.ts +2 -0
- package/dist/types/chat/ConversationMessage/ConversationCallMarkerChip/ConversationCallMarkerChip.d.ts +14 -0
- package/dist/types/chat/ConversationMessage/ConversationCallMarkerChip/VoiceBarsIcon/VoiceBarsIcon.d.ts +8 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageSystem/ConversationMessageSystem.d.ts +8 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageSystem/ConversationMessageSystemHeader/ConversationMessageSystemHeader.d.ts +9 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageUser/ConversationMessageUser.d.ts +7 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageUser/ConversationMessageUserWidgets.d.ts +14 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/ConversationMessageHeader/ConversationMessageHeader.d.ts +7 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/ConversationMessageThinking/ConversationMessageThinking.d.ts +7 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/ConversationMessageWidgets.d.ts +29 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/copyRichToClipboard.d.ts +1 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/hooks/useFreshMessageBlockReveal.d.ts +14 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/hooks/useStreamingText.d.ts +8 -0
- package/dist/types/chat/ConversationMessage/ConversationMessageWidgets/hooks/useTypewriter.d.ts +12 -0
- package/dist/types/chat/ConversationMessage/ConversationTaskInstructionDisclosure/ConversationTaskInstructionDisclosure.d.ts +12 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInput.d.ts +111 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/ConversationMessageInputAttachmentPreviewCard.d.ts +34 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/ConversationMessageInputAttachmentsErrorBox.d.ts +22 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/ConversationMessageInputAttachmentsPreviewStrip.d.ts +12 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputAttachments/convert-bytes-to-size-string.d.ts +2 -0
- package/dist/types/chat/ConversationMessageInput/ConversationMessageInputComposerWidgets/ConversationMessageInputComposerWidgets.d.ts +12 -0
- package/dist/types/chat/ConversationMessageList/ConversationMessageList.d.ts +75 -0
- package/dist/types/chat/ConversationScrollToLatestMessageButton/ConversationScrollToLatestMessageButton.d.ts +6 -0
- package/dist/types/chat/ConversationSuggestionCard/ConversationSuggestionCard.d.ts +7 -0
- package/dist/types/chat/ConversationView.d.ts +216 -0
- package/dist/types/chat/ConversationViewBody/ConversationViewBody.d.ts +214 -0
- package/dist/types/chat/ConversationViewBody/hooks/useIsMessagesBottomOutOfView.d.ts +2 -0
- package/dist/types/chat/ConversationViewBody/hooks/usePinQuestionOnSend.d.ts +24 -0
- package/dist/types/chat/assistant-message-has-renderable-markdown.d.ts +13 -0
- package/dist/types/chat/chat-assistant-identity.d.ts +24 -0
- package/dist/types/chat/chat-message.d.ts +11 -0
- package/dist/types/chat/controller/AgentChatController.d.ts +97 -0
- package/dist/types/chat/controller/activity-ticker.d.ts +120 -0
- package/dist/types/chat/controller/changed-messages-request.d.ts +12 -0
- package/dist/types/chat/controller/chat-scroll-target.d.ts +10 -0
- package/dist/types/chat/controller/conversation-change-signal-rules.d.ts +64 -0
- package/dist/types/chat/controller/derive-agent-activity.d.ts +31 -0
- package/dist/types/chat/controller/merge-activity-elements.d.ts +25 -0
- package/dist/types/chat/controller/pending-start-request.d.ts +38 -0
- package/dist/types/chat/controller/use-activity-ticker.d.ts +60 -0
- package/dist/types/chat/controller/use-conversation-activity.d.ts +38 -0
- package/dist/types/chat/controller/use-conversation-live-updates.d.ts +30 -0
- package/dist/types/chat/controller/use-conversation-message-pages.d.ts +24 -0
- package/dist/types/chat/controller/use-conversation-scroll-jump.d.ts +47 -0
- package/dist/types/chat/controller/use-conversation-search.d.ts +31 -0
- package/dist/types/chat/controller/use-conversation-signals.d.ts +44 -0
- package/dist/types/chat/controller/use-debounced-semantic-search.d.ts +15 -0
- package/dist/types/chat/conversation-send-message.d.ts +43 -0
- package/dist/types/chat/last-wire-message-is-unanswered-user-message.d.ts +22 -0
- package/dist/types/chat/normalize-server-message-to-markdown.d.ts +23 -0
- package/dist/types/chat/store/agents-chat-state.d.ts +132 -0
- package/dist/types/chat/store/conversation-error-type.d.ts +32 -0
- package/dist/types/chat/store/create-agents-chat-store.d.ts +23 -0
- package/dist/types/chat/store/index.d.ts +5 -0
- package/dist/types/chat/store/merge-chat-messages.d.ts +20 -0
- package/dist/types/chat/store/reduce-agents-chat-state.d.ts +7 -0
- package/dist/types/chat/store/use-agents-chat-store.d.ts +22 -0
- package/dist/types/chat/strip-pre-call-message-marker.d.ts +12 -0
- package/dist/types/chat/use-canvas-shell-transitions.d.ts +25 -0
- package/dist/types/client/AgentsConversationClient.d.ts +93 -0
- package/dist/types/client/AgentsConversationClientContext.d.ts +17 -0
- package/dist/types/client/polling/createPollingConversationChangeSubscription.d.ts +62 -0
- package/dist/types/client/polling/withPollingChangeSubscription.d.ts +11 -0
- package/dist/types/client/testing/createInMemoryAgentsConversationClient.d.ts +139 -0
- package/dist/types/contract/conversation.d.ts +370 -0
- package/dist/types/entries/chat.d.ts +21 -0
- package/dist/types/entries/client-testing.d.ts +1 -0
- package/dist/types/entries/client.d.ts +4 -0
- package/dist/types/entries/contract.d.ts +1 -0
- package/dist/types/entries/image-render.d.ts +9 -0
- package/dist/types/entries/index.d.ts +9 -0
- package/dist/types/entries/kit.d.ts +4 -0
- package/dist/types/entries/preview.d.ts +8 -0
- package/dist/types/entries/renderer.d.ts +15 -0
- package/dist/types/entries/widgets.d.ts +16 -0
- package/dist/types/image-render/ComposedViewEmailDataTimes/ComposedViewEmailDataTimes.d.ts +15 -0
- package/dist/types/image-render/WidgetImageRender.d.ts +55 -0
- package/dist/types/image-render/WidgetImageRenderContext.d.ts +14 -0
- package/dist/types/image-render/composed-view-data-times.d.ts +20 -0
- package/dist/types/image-render/frozen-widget-requests.d.ts +2 -0
- package/dist/types/image-render/live-widget-requests.d.ts +4 -0
- package/dist/types/image-render/widget-image-google-map.d.ts +7 -0
- package/dist/types/image-render/widget-image-readiness-signal.d.ts +16 -0
- package/dist/types/image-render/widget-image-readiness.d.ts +9 -0
- package/dist/types/image-render/widget-image-render.types.d.ts +47 -0
- package/dist/types/kit/ComposedViewConversationWidget.d.ts +14 -0
- package/dist/types/kit/ComposedViewDataSourceLoader.d.ts +20 -0
- package/dist/types/kit/ComposedViewRenderer.d.ts +30 -0
- package/dist/types/kit/ComposedViewSlotErrorBoundary.d.ts +23 -0
- package/dist/types/kit/ModelText/ModelText.d.ts +12 -0
- package/dist/types/kit/components/embedding/EmbeddedConversationWidget.d.ts +26 -0
- package/dist/types/kit/components/map/map-full-screen-instance.d.ts +26 -0
- package/dist/types/kit/components/map/map-presentation-context.d.ts +8 -0
- package/dist/types/kit/components/text/shared/text-node-values.d.ts +39 -0
- package/dist/types/kit/composed-view-component-types.d.ts +61 -0
- package/dist/types/kit/composed-view-components.d.ts +7 -0
- package/dist/types/kit/composed-view-tones.d.ts +20 -0
- package/dist/types/kit/entity-detail/EntityDetailCanvasBody.d.ts +9 -0
- package/dist/types/kit/entity-detail/entity-detail-bodies.d.ts +32 -0
- package/dist/types/kit/entity-detail/entity-detail-name.d.ts +9 -0
- package/dist/types/kit/hooks/use-debounced-value.d.ts +2 -0
- package/dist/types/kit/map-full-screen/MapFullScreenCanvasBody.d.ts +11 -0
- package/dist/types/preview/WidgetPreviewHost.d.ts +20 -0
- package/dist/types/preview/preview-stub-components.d.ts +3 -0
- package/dist/types/preview/widget-preview-fixtures.d.ts +17 -0
- package/dist/types/preview/widget-preview-hydration.d.ts +10 -0
- package/dist/types/preview/widget-preview-readiness.d.ts +27 -0
- package/dist/types/preview/widget-preview-requests.d.ts +16 -0
- package/dist/types/preview/widget-preview-signal.d.ts +10 -0
- package/dist/types/preview/widget-preview.types.d.ts +134 -0
- package/dist/types/provider/AgentsProvider.d.ts +33 -0
- package/dist/types/provider/class-names.d.ts +7 -0
- package/dist/types/provider/components/default-components.d.ts +3 -0
- package/dist/types/provider/components/icon-names.d.ts +9 -0
- package/dist/types/provider/components/index.d.ts +39 -0
- package/dist/types/provider/components/types.d.ts +463 -0
- package/dist/types/provider/environment.d.ts +262 -0
- package/dist/types/provider/index.d.ts +4 -0
- package/dist/types/renderer/ConversationDeepLinkedWidget.d.ts +18 -0
- package/dist/types/renderer/ConversationMarkdown.d.ts +21 -0
- package/dist/types/renderer/ConversationWidgetActions/ConversationWidgetActions.d.ts +7 -0
- package/dist/types/renderer/ConversationWidgetCallbacksContext.d.ts +234 -0
- package/dist/types/renderer/ConversationWidgetContext.d.ts +32 -0
- package/dist/types/renderer/ConversationWidgetErrorBoundary.d.ts +25 -0
- package/dist/types/renderer/ConversationWidgetHost.d.ts +36 -0
- package/dist/types/renderer/ConversationWidgetRenderContext.d.ts +3 -0
- package/dist/types/renderer/MarkdownLink.d.ts +6 -0
- package/dist/types/renderer/WindowedWidget/WindowedWidget.d.ts +16 -0
- package/dist/types/renderer/_access/ConversationWidgetFeatureGate.d.ts +21 -0
- package/dist/types/renderer/_agent-space/ConversationWidgetAgentSpaceFrame.d.ts +12 -0
- package/dist/types/renderer/_agent-space/ConversationWidgetAgentSpaceHeader.d.ts +15 -0
- package/dist/types/renderer/_agent-space/agent-space-name.hydrator.d.ts +7 -0
- package/dist/types/renderer/_agent-space/declared-agent-space-key-field-name.d.ts +8 -0
- package/dist/types/renderer/_agent-space/use-resolved-conversation-widget-agent-space-key.d.ts +16 -0
- package/dist/types/renderer/_agent-space/widget-agent-space-key-attribute.d.ts +13 -0
- package/dist/types/renderer/balanced-json-object.d.ts +12 -0
- package/dist/types/renderer/canvas/CanvasRestoreOnMount.d.ts +19 -0
- package/dist/types/renderer/canvas/canvas-behaviours.d.ts +84 -0
- package/dist/types/renderer/canvas/canvas-body-props.d.ts +18 -0
- package/dist/types/renderer/canvas/canvas-feature-flags.d.ts +11 -0
- package/dist/types/renderer/canvas/canvas-reducers.d.ts +46 -0
- package/dist/types/renderer/canvas/canvas-state.d.ts +107 -0
- package/dist/types/renderer/canvas/canvasBodies.d.ts +19 -0
- package/dist/types/renderer/canvas/canvasStorage.d.ts +25 -0
- package/dist/types/renderer/canvas/decide-canvas-open.d.ts +32 -0
- package/dist/types/renderer/canvas/entity-detail-instance.d.ts +27 -0
- package/dist/types/renderer/canvas/find-widget-fences-in-markdown.d.ts +32 -0
- package/dist/types/renderer/canvas/use-anchor-widget-payload.d.ts +8 -0
- package/dist/types/renderer/composer-widget-fence.d.ts +30 -0
- package/dist/types/renderer/conversation-composer-widget.d.ts +13 -0
- package/dist/types/renderer/conversation-widget-props.d.ts +54 -0
- package/dist/types/renderer/conversation-widget-state-partition.d.ts +31 -0
- package/dist/types/renderer/conversationWidgetAstPlugin.d.ts +11 -0
- package/dist/types/renderer/conversationWidgetRegistry.d.ts +74 -0
- package/dist/types/renderer/detect-unrendered-widgets.d.ts +42 -0
- package/dist/types/renderer/markdown-contains-widget.d.ts +13 -0
- package/dist/types/renderer/reference-naked-widget-json.d.ts +1 -0
- package/dist/types/renderer/remarkWidgetFencePlugin.d.ts +22 -0
- package/dist/types/renderer/render-report/widget-render-report-collector.d.ts +57 -0
- package/dist/types/renderer/render-report/widget-render-report.d.ts +29 -0
- package/dist/types/renderer/repair-malformed-widget-fences.d.ts +11 -0
- package/dist/types/renderer/resolve-deep-linkable-widget.d.ts +25 -0
- package/dist/types/renderer/restoreTextDirectivesPlugin.d.ts +12 -0
- package/dist/types/renderer/widget-click-signal-sources.d.ts +15 -0
- package/dist/types/renderer/widget-fence-json.d.ts +16 -0
- package/dist/types/renderer/widget-fence-syntax.d.ts +25 -0
- package/dist/types/renderer/widget-hydration/index.d.ts +8 -0
- package/dist/types/renderer/widget-hydration/section-hydration.d.ts +41 -0
- package/dist/types/renderer/widget-hydration/use-widget-hydration.d.ts +27 -0
- package/dist/types/renderer/widget-hydration/widget-hydration-state-store.d.ts +27 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.reducer.d.ts +39 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.registry.d.ts +7 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.slice.d.ts +8 -0
- package/dist/types/renderer/widget-hydration/widget-hydration.types.d.ts +27 -0
- package/dist/types/renderer/widget-name-resolver.d.ts +22 -0
- package/dist/types/renderer/widget-tree/bounded-json.d.ts +23 -0
- package/dist/types/renderer/widget-tree/composed-node-schema.d.ts +143 -0
- package/dist/types/renderer/widget-tree/composed-view-data-sources.d.ts +41 -0
- package/dist/types/renderer/widget-tree/composed-view-tree.d.ts +111 -0
- package/dist/types/renderer/widget-tree/expression/evaluate-expression.d.ts +65 -0
- package/dist/types/renderer/widget-tree/expression/parse-expression.d.ts +71 -0
- package/dist/types/renderer/widget-tree/resolve-composed-view-values.d.ts +49 -0
- package/dist/types/renderer/widget-tree/use-composed-view-state.d.ts +16 -0
- package/dist/types/renderer/widget-windowing.d.ts +25 -0
- package/dist/types/widgets/CanvasWidgetCard/CanvasWidgetCard.d.ts +79 -0
- package/dist/types/widgets/CanvasWidgetCard/CanvasWidgetSwitch.d.ts +61 -0
- package/dist/types/widgets/CanvasWidgetCard/canvas-for-message-widget.d.ts +8 -0
- package/dist/types/widgets/CanvasWidgetCard/use-canvas-viable.d.ts +15 -0
- package/dist/types/widgets/ClockConversationWidget/ClockConversationWidget.d.ts +11 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/AnalogClockFace.d.ts +12 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/ClockRow.d.ts +23 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/ClockWidget.d.ts +21 -0
- package/dist/types/widgets/ClockConversationWidget/ClockWidget/DayNightGlyph.d.ts +8 -0
- package/dist/types/widgets/ClockConversationWidget/shared/clock-time.d.ts +52 -0
- package/dist/types/widgets/ClockConversationWidget/shared/clock-widget-payload.d.ts +23 -0
- package/dist/types/widgets/ClockConversationWidget/shared/use-clock-settings.d.ts +18 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/ConceptExplainerConversationWidget.d.ts +14 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/ConceptExplainerWidget/ConceptExplainerWidget.d.ts +27 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/ConceptExplainerTextView.d.ts +11 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/concept-explainer-type.d.ts +89 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/concept-explainer-types.d.ts +17 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/concept-explainer-widget-payload.d.ts +25 -0
- package/dist/types/widgets/ConceptExplainerConversationWidget/shared/use-concept-explainer-language.d.ts +8 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsCanvas.d.ts +9 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsCanvasBody.d.ts +7 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/ConversationSearchResultsConversationWidget.d.ts +15 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/shared/conversation-search-results-widget-payload.d.ts +42 -0
- package/dist/types/widgets/ConversationSearchResultsConversationWidget/shared/search-hit-excerpt.d.ts +1 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/CurrencyConverterConversationWidget.d.ts +8 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/CurrencyConverterWidget/CurrencyConverterWidget.d.ts +17 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/CurrencyConverterWidget/CurrencyLabel/CurrencyLabel.d.ts +9 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/shared/currency-converter-widget-payload.d.ts +22 -0
- package/dist/types/widgets/CurrencyConverterConversationWidget/shared/currency-display.d.ts +30 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/CustomVisualizationConversationWidget.d.ts +11 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/CustomVisualizationWidget/CustomVisualizationFrame.d.ts +14 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/CustomVisualizationWidget/CustomVisualizationWidget.d.ts +15 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-frame-protocol.d.ts +77 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-libraries.d.ts +25 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-sandbox-config.d.ts +21 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/custom-visualization-widget-payload.d.ts +55 -0
- package/dist/types/widgets/CustomVisualizationConversationWidget/shared/read-custom-visualization-theme.d.ts +5 -0
- package/dist/types/widgets/EntityMentionConversationWidget/EntityMentionAskButton/EntityMentionAskButton.d.ts +13 -0
- package/dist/types/widgets/EntityMentionConversationWidget/EntityMentionCard/EntityMentionCard.d.ts +11 -0
- package/dist/types/widgets/EntityMentionConversationWidget/EntityMentionConversationWidget.d.ts +9 -0
- package/dist/types/widgets/EntityMentionConversationWidget/shared/entity-mention-presentation.d.ts +4 -0
- package/dist/types/widgets/EntityMentionConversationWidget/shared/entity-mention.d.ts +33 -0
- package/dist/types/widgets/EntityMentionConversationWidget/shared/use-entity-mention-composer.d.ts +17 -0
- package/dist/types/widgets/MultiChoiceConversationWidget/MultiChoiceConversationWidget.d.ts +2 -0
- package/dist/types/widgets/MultiChoiceConversationWidget/shared/multi-choice-widget-payload.d.ts +16 -0
- package/dist/types/widgets/QuickRepliesConversationWidget/QuickRepliesConversationWidget.d.ts +38 -0
- package/dist/types/widgets/QuickRepliesConversationWidget/shared/quick-replies-widget-payload.d.ts +20 -0
- package/dist/types/widgets/SuggestedActions/SuggestedActions.d.ts +10 -0
- package/dist/types/widgets/ToolTraceConversationWidget/ToolTraceConversationWidget.d.ts +8 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/SourceFavicon.d.ts +10 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchAnswer.d.ts +6 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchReferences.d.ts +12 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchResultsCanvas.d.ts +10 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchResultsCanvasBody.d.ts +7 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchResultsConversationWidget.d.ts +14 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/WebSearchSourcesList.d.ts +10 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/shared/display-hostname.d.ts +9 -0
- package/dist/types/widgets/WebSearchResultsConversationWidget/shared/web-search-results-widget-payload.d.ts +30 -0
- package/dist/types/widgets/WritingDraftConversationWidget/WritingDraftConversationWidget.d.ts +14 -0
- package/dist/types/widgets/WritingDraftConversationWidget/WritingDraftWidget/WritingDraftBody.d.ts +9 -0
- package/dist/types/widgets/WritingDraftConversationWidget/WritingDraftWidget/WritingDraftWidget.d.ts +44 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/draft-mail-link.d.ts +17 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/draft-plain-text.d.ts +7 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/remark-draft-line-breaks.d.ts +13 -0
- package/dist/types/widgets/WritingDraftConversationWidget/shared/writing-draft-widget-payload.d.ts +23 -0
- package/dist/types/widgets/_shared/ConversationWidgetButton.d.ts +4 -0
- package/dist/types/widgets/_shared/DonePill.d.ts +14 -0
- package/dist/types/widgets/_shared/modern/WidgetKpiValue.d.ts +24 -0
- package/dist/types/widgets/_shared/modern/WidgetListRow.d.ts +14 -0
- package/dist/types/widgets/_shared/modern/WidgetStatusChip.d.ts +8 -0
- package/dist/types/widgets/_shared/modern/WidgetSurface.d.ts +13 -0
- package/dist/types/widgets/_shared/modern/WidgetSurfaceSkeleton.d.ts +11 -0
- package/dist/types/widgets/_shared/modern/index.d.ts +16 -0
- package/dist/types/widgets/_shared/skeleton-primitives.d.ts +20 -0
- package/dist/types/widgets/_shared/use-stack-when-wrapped.d.ts +6 -0
- package/dist/types/widgets/_shared/widget-payload-validation.d.ts +22 -0
- package/dist/widgets.js +84 -0
- package/dist/widgets.js.map +1 -0
- package/package.json +147 -3
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type ConversationScrollToLatestMessageButtonProps = {
|
|
2
|
+
visible: boolean;
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
};
|
|
5
|
+
export declare const ConversationScrollToLatestMessageButton: (props: ConversationScrollToLatestMessageButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ChatAssistantOpening } from "../chat-assistant-identity";
|
|
2
|
+
export interface ConversationSuggestionCardProps {
|
|
3
|
+
suggestion: ChatAssistantOpening;
|
|
4
|
+
onClick?: () => void;
|
|
5
|
+
testId?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const ConversationSuggestionCard: (props: ConversationSuggestionCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import type { ChatAssistantCategory, ChatAssistantIdentity, ChatAssistantOpening } from "./chat-assistant-identity";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { ConversationErrorType } from "./store/conversation-error-type";
|
|
4
|
+
import type { ChatMessage } from "./chat-message";
|
|
5
|
+
import { ConversationMessageUserTheme } from "./ConversationMessage/ConversationMessageUser/ConversationMessageUser";
|
|
6
|
+
import { ConversationMessageInputHandle } from "./ConversationMessageInput/ConversationMessageInput";
|
|
7
|
+
import type { ConversationAttachmentReference } from "../contract/conversation";
|
|
8
|
+
import { SendMessageHandler } from "./conversation-send-message";
|
|
9
|
+
export interface ConversationViewProps {
|
|
10
|
+
currentCategory?: ChatAssistantCategory;
|
|
11
|
+
aiPromptExtension?: ChatAssistantIdentity;
|
|
12
|
+
suggestions?: ChatAssistantOpening[];
|
|
13
|
+
messages: ChatMessage[] | null;
|
|
14
|
+
aiThinking: boolean;
|
|
15
|
+
error: ConversationErrorType | null;
|
|
16
|
+
/** Retry-After seconds of a 429 quota rejection — forwarded to the error card for the "try again in …" wording. */
|
|
17
|
+
rateLimitRetryAfterSeconds?: number | null;
|
|
18
|
+
/**
|
|
19
|
+
* Host-bound retry of a FAILED run: re-drives the persisted, unanswered customer message
|
|
20
|
+
* server-side. Each host binds it to ITS chat slice; forwarded through the body to the message list / error card.
|
|
21
|
+
*/
|
|
22
|
+
onRetryFailedRun?: () => Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* True when the host (the agent) is minimized to the compact side-panel; forwarded to ConversationViewBody.
|
|
25
|
+
*/
|
|
26
|
+
isCompact?: boolean;
|
|
27
|
+
isDebugMode: boolean;
|
|
28
|
+
categoriesLoaded: boolean;
|
|
29
|
+
conversationId?: number;
|
|
30
|
+
startingNewConversation?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Show the message list even when no conversation exists yet. Used by a host,
|
|
33
|
+
* whose fresh (not-yet-created) chat renders its empty message list.
|
|
34
|
+
*/
|
|
35
|
+
showMessagesWithoutConversation?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Follow the conversation bottom (scroll-on-mount + resize follow). Default true.
|
|
38
|
+
* A host disables it for a fresh chat that has no messages yet.
|
|
39
|
+
*/
|
|
40
|
+
autoScroll?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Custom node mounted at the tail of the message list instead of the default
|
|
43
|
+
* (thinking-only) ConversationMessageThinking. Rendered permanently — used by
|
|
44
|
+
* A host to show the animated agent face, which idles between turns.
|
|
45
|
+
*/
|
|
46
|
+
thinkingIndicator?: React.ReactNode;
|
|
47
|
+
/**
|
|
48
|
+
* Hide the assistant header (icon + name + "Assistant") and the copy button
|
|
49
|
+
* on assistant messages. Used by a host, which renders bare messages.
|
|
50
|
+
*/
|
|
51
|
+
hideAssistantMeta?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Theme for user-message bubbles, passed through to ConversationViewBody →
|
|
54
|
+
* ConversationMessageList. A host forces "dark"; omitted elsewhere.
|
|
55
|
+
*/
|
|
56
|
+
userMessageTheme?: ConversationMessageUserTheme;
|
|
57
|
+
/**
|
|
58
|
+
* Custom background slot passed through to ConversationViewBody. When provided, the
|
|
59
|
+
* default chat gradient and AI-Extensions illustrations are suppressed.
|
|
60
|
+
*/
|
|
61
|
+
background?: React.ReactNode;
|
|
62
|
+
/**
|
|
63
|
+
* Opt-in: the host paints the chat's background itself, OUTSIDE this component — passed through to ConversationViewBody,
|
|
64
|
+
* which keeps the same `customBg` visual mode (transparent pane) `background` would give it, minus
|
|
65
|
+
* a background node of its own to render (see ConversationViewBody's `backgroundPaintedByHost`).
|
|
66
|
+
*/
|
|
67
|
+
backgroundPaintedByHost?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Optional ref forwarded to ConversationViewBody's scrollable content wrapper.
|
|
70
|
+
* Callers use this to drive scroll-linked effects on top of the chat — e.g.
|
|
71
|
+
* `useShaderScrollMorph` for the animated background.
|
|
72
|
+
*/
|
|
73
|
+
scrollRef?: React.Ref<HTMLDivElement>;
|
|
74
|
+
/** Bump to force a scroll to the newest message — forwarded to ConversationViewBody (see its `scrollToBottomNonce`). */
|
|
75
|
+
scrollToBottomNonce?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Optional external bottom-follow flag, forwarded to ConversationViewBody (see its `followBottomRef`). A host sets it `false`
|
|
78
|
+
* for a programmatic jump away from the bottom (e.g. the search-result jump) so the follow effects stop yanking the
|
|
79
|
+
* view back. Left undefined, ConversationViewBody uses its own internal flag.
|
|
80
|
+
*/
|
|
81
|
+
followBottomRef?: React.MutableRefObject<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Optional "a programmatic jump is in flight" gate, forwarded to ConversationViewBody (see its `scrollJumpActiveRef`). While
|
|
84
|
+
* true, ConversationViewBody neither re-enables bottom-follow on scroll nor auto-scrolls to the bottom on resize, so the
|
|
85
|
+
* host's jump isn't fought by the near-bottom onScroll handler or the resize-follow. Left undefined → no gating.
|
|
86
|
+
*/
|
|
87
|
+
scrollJumpActiveRef?: React.MutableRefObject<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
* Render the chat body alone, without the two-pane ModalSplitView. The split view's
|
|
90
|
+
* second pane is sized for a full-width modal, so in a narrow side panel (e.g. an
|
|
91
|
+
* app's editor drawer) it overlays whatever sits beside the panel — and those hosts
|
|
92
|
+
* don't use widget content-drawers anyway.
|
|
93
|
+
*/
|
|
94
|
+
disableSplitView?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Opt-in: show the round divider FAB that toggles the canvas (open → close, closed → re-open the last canvas).
|
|
97
|
+
* Off by default — ConversationView is shared (generic AI-extensions chat, a host, agent); only hosts that want the
|
|
98
|
+
* divider toggle (agent) enable it.
|
|
99
|
+
*/
|
|
100
|
+
enableCanvasToggle?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Opt-in (agent): render the side-split canvas as a rounded surface card (border-radius + surface background)
|
|
103
|
+
* so it sits neatly alongside the left side of the host's floating top bar, instead of a flush full-height pane.
|
|
104
|
+
* Only the card surface is gated here and only while the canvas is a side-split (viewport ≥ 850px); the small
|
|
105
|
+
* inset that keeps the canvas clear of the pane edge applies to every canvas (see CanvasPane `.root`),
|
|
106
|
+
* including the narrow full-screen overlay below 850px (where the host hides its top bar, AW-57).
|
|
107
|
+
*/
|
|
108
|
+
boxCanvasBelowTopBar?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Opt-in (agent host only): confine the customBg top blur band to the chat pane (position: sticky, sized to
|
|
111
|
+
* the pane) instead of the whole viewport (position: fixed, the default for a custom `background` in full-screen
|
|
112
|
+
* mode). Turn on only while a sibling side panel is docked beside the chat (sideCard mode) — otherwise the band
|
|
113
|
+
* would stay full-viewport-width and bleed over the panel instead of compressing together with the chat. Forwarded
|
|
114
|
+
* straight through to ConversationViewBody, which owns the actual CSS (see its `.confineTopBlurBandToChatPane`).
|
|
115
|
+
*/
|
|
116
|
+
confineTopBlurBandToChatPane?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* The setup progress stepper (today's only consumer: the agent chat), forwarded straight through to
|
|
119
|
+
* ConversationViewBody, which mounts it as a direct child of its positioned pane root — the node brings its own
|
|
120
|
+
* positioning. It lands INSIDE this view's split, so an open canvas contracts it along with the chat; that pane
|
|
121
|
+
* boundary is why the host cannot place the strip itself.
|
|
122
|
+
*/
|
|
123
|
+
progressStepperSlot?: React.ReactNode;
|
|
124
|
+
/**
|
|
125
|
+
* Scroll-up older-message pagination (opt-in — forwarded to ConversationViewBody). When `onLoadOlder` is provided, a top
|
|
126
|
+
* sentinel prefetches the next older page and the viewport is anchored across the prepend. Default off.
|
|
127
|
+
*/
|
|
128
|
+
hasMoreOlder?: boolean;
|
|
129
|
+
loadingOlder?: boolean;
|
|
130
|
+
onLoadOlder?: () => void;
|
|
131
|
+
/**
|
|
132
|
+
* Extra action controls rendered inside the chat input's action row, left of the send button —
|
|
133
|
+
* spread through to ConversationViewBody → ConversationMessageInput (e.g. the agent model picker pill).
|
|
134
|
+
*/
|
|
135
|
+
inputActionsSlot?: React.ReactNode;
|
|
136
|
+
/**
|
|
137
|
+
* Action controls pinned to the LEFT edge of the chat input's action row (`inputActionsSlot`
|
|
138
|
+
* stays right) — spread through to ConversationViewBody → ConversationMessageInput (e.g. the agent "+" attachments menu).
|
|
139
|
+
*/
|
|
140
|
+
inputActionsSlotStart?: React.ReactNode;
|
|
141
|
+
/**
|
|
142
|
+
* Host-owned content rendered inside the chat input above its editable text area — attachment
|
|
143
|
+
* preview cards, validation error boxes. Spread through to ConversationViewBody → ConversationMessageInput's `topSlot`.
|
|
144
|
+
*/
|
|
145
|
+
inputTopSlot?: React.ReactNode;
|
|
146
|
+
/**
|
|
147
|
+
* Hard send gate for the chat input: blocks the send button AND Enter while true, but keeps the
|
|
148
|
+
* text editable. The host sets it e.g. while attachment uploads run.
|
|
149
|
+
*/
|
|
150
|
+
inputSendDisabled?: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Host-owned content rendered IN PLACE of the chat input — the closed-conversation bar of a completed
|
|
153
|
+
* setup conversation (no further input possible). When set, ConversationViewBody renders it instead of ConversationMessageInput.
|
|
154
|
+
*/
|
|
155
|
+
inputReplacementSlot?: React.ReactNode;
|
|
156
|
+
/**
|
|
157
|
+
* Host-owned band right above the chat input, the input overlapping its lower edge — e.g. the running voice chat
|
|
158
|
+
* with its controls. Not rendered while `inputReplacementSlot` replaces the input.
|
|
159
|
+
*/
|
|
160
|
+
inputBandSlot?: React.ReactNode;
|
|
161
|
+
/** The chat input's placeholder; the input's own default otherwise. */
|
|
162
|
+
inputPlaceholder?: string;
|
|
163
|
+
/** Forwarded to ConversationMessageInput's `sendReplacementWhenEmpty`. */
|
|
164
|
+
inputSendReplacementWhenEmpty?: React.ReactNode;
|
|
165
|
+
/** Forwarded to ConversationMessageInput's `glowUnderlay`. */
|
|
166
|
+
inputGlowUnderlay?: React.ReactNode;
|
|
167
|
+
/**
|
|
168
|
+
* Host-owned layer over the message column, the same size — e.g. the voice chat's focus mode. The message column
|
|
169
|
+
* stays mounted under it (scroll position and widget state kept); `isContentOverlayShown` switches between them.
|
|
170
|
+
*/
|
|
171
|
+
contentOverlaySlot?: React.ReactNode;
|
|
172
|
+
isContentOverlayShown?: boolean;
|
|
173
|
+
/**
|
|
174
|
+
* Uploaded media-library images that ride along in `onSendMessage`'s options object (`attachments`) on the next
|
|
175
|
+
* send. Owned and cleared by the host; ConversationView/ConversationMessageInput only forward them.
|
|
176
|
+
*/
|
|
177
|
+
outgoingAttachmentImages?: ConversationAttachmentReference[];
|
|
178
|
+
/**
|
|
179
|
+
* Imperative handle on the chat input (insertTextIntoInput) so host-owned controls — e.g. the
|
|
180
|
+
* "+" menu's "Generate image" entry — can put text into it.
|
|
181
|
+
*/
|
|
182
|
+
conversationMessageInputApiRef?: React.Ref<ConversationMessageInputHandle>;
|
|
183
|
+
/**
|
|
184
|
+
* Keep the chat input editable and sendable while `aiThinking` is true (default false — the input locks for the
|
|
185
|
+
* whole turn); only the first post of a new conversation still locks it, while no conversation id exists yet. Opt
|
|
186
|
+
* in ONLY for a host whose post call stores the message and returns at once, and whose agent checks for unanswered
|
|
187
|
+
* messages when its turn ends, so a message sent mid-turn is answered in the next turn. A host whose post call
|
|
188
|
+
* generates the reply synchronously within the request has no such guard and must leave it off.
|
|
189
|
+
*/
|
|
190
|
+
allowSendWhileAiThinking?: boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Opt-in long-answer reading flow (AW-107), default false — spread through to ConversationViewBody. When enabled:
|
|
193
|
+
* (1) on send, the question is pinned to the top with room reserved below it; (2) a scroll-to-latest-message
|
|
194
|
+
* button floats above the input while the bottom is out of view; (3) a fresh static reply's markdown blocks
|
|
195
|
+
* fade in staggered. AI Extensions stays off; the agent chat opts in.
|
|
196
|
+
*/
|
|
197
|
+
enablePinQuestionAndRevealAnswer?: boolean;
|
|
198
|
+
/** Forwarded to ConversationViewBody's `isQuestionPinSuspended`. */
|
|
199
|
+
isQuestionPinSuspended?: boolean;
|
|
200
|
+
/**
|
|
201
|
+
* Id of the ONE user message ConversationMessageList renders as a collapsed task-instruction disclosure instead of an
|
|
202
|
+
* owner bubble — the machine-composed seed instruction of a SCHEDULE-spawned run (UX overhaul W4 item 19).
|
|
203
|
+
* Forwarded through ConversationViewBody. Undefined (every host except the agent chat) changes nothing.
|
|
204
|
+
*/
|
|
205
|
+
taskInstructionMessageId?: number;
|
|
206
|
+
/**
|
|
207
|
+
* Host content rendered right after one message of the thread — the agent chat's activity card under the message that
|
|
208
|
+
* started each turn. Forwarded through ConversationViewBody to ConversationMessageList. Undefined changes nothing.
|
|
209
|
+
*/
|
|
210
|
+
renderAfterMessage?: (message: ChatMessage) => React.ReactNode;
|
|
211
|
+
/** Forwarded through ConversationViewBody to ConversationMessageList: a closed conversation renders no widget controls. */
|
|
212
|
+
isConversationClosed?: boolean;
|
|
213
|
+
onSuggestionClick: (text: string) => void;
|
|
214
|
+
onSendMessage: SendMessageHandler;
|
|
215
|
+
}
|
|
216
|
+
export declare const ConversationView: (props: ConversationViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { ChatAssistantCategory, ChatAssistantIdentity, ChatAssistantOpening } from "../chat-assistant-identity";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { ConversationMessageInputHandle } from "../ConversationMessageInput/ConversationMessageInput";
|
|
4
|
+
import type { ConversationAttachmentReference } from "../../contract/conversation";
|
|
5
|
+
import { SendMessageHandler } from "../conversation-send-message";
|
|
6
|
+
import { ConversationErrorType } from "../store/conversation-error-type";
|
|
7
|
+
import type { ChatMessage } from "../chat-message";
|
|
8
|
+
import { ConversationMessageUserTheme } from "../ConversationMessage/ConversationMessageUser/ConversationMessageUser";
|
|
9
|
+
export interface ConversationViewProps {
|
|
10
|
+
currentCategory?: ChatAssistantCategory;
|
|
11
|
+
aiPromptExtension?: ChatAssistantIdentity;
|
|
12
|
+
suggestions?: ChatAssistantOpening[];
|
|
13
|
+
messages: ChatMessage[] | null;
|
|
14
|
+
aiThinking: boolean;
|
|
15
|
+
error: ConversationErrorType | null;
|
|
16
|
+
/** Retry-After seconds of a 429 quota rejection — forwarded to the error card for the "try again in …" wording. */
|
|
17
|
+
rateLimitRetryAfterSeconds?: number | null;
|
|
18
|
+
/** Host-bound retry of a FAILED run — forwarded to the message list / error card. */
|
|
19
|
+
onRetryFailedRun?: () => Promise<void>;
|
|
20
|
+
isDebugMode: boolean;
|
|
21
|
+
categoriesLoaded: boolean;
|
|
22
|
+
conversationId?: number;
|
|
23
|
+
startingNewConversation?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Show the message list even when no conversation exists yet. Used by a host,
|
|
26
|
+
* whose fresh (not-yet-created) chat renders its empty message list.
|
|
27
|
+
*/
|
|
28
|
+
showMessagesWithoutConversation?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Follow the conversation bottom (scroll-on-mount + resize follow). Default true.
|
|
31
|
+
* A host disables it for a fresh chat that has no messages yet, so the view stays
|
|
32
|
+
* anchored at the top.
|
|
33
|
+
*/
|
|
34
|
+
autoScroll?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Custom node mounted at the tail of the message list instead of the default
|
|
37
|
+
* (thinking-only) ConversationMessageThinking. Rendered permanently — used by
|
|
38
|
+
* A host to show the animated agent face, which idles between turns.
|
|
39
|
+
*/
|
|
40
|
+
thinkingIndicator?: React.ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* Custom background slot rendered absolutely behind the chat content. When
|
|
43
|
+
* provided, the default chat gradient and the AI-Extensions category
|
|
44
|
+
* illustrations are suppressed so the caller owns the entire background
|
|
45
|
+
* (e.g. A host's shader). Pair with a parent that supplies a solid base color
|
|
46
|
+
* if the slot doesn't paint the full canvas itself.
|
|
47
|
+
*/
|
|
48
|
+
background?: React.ReactNode;
|
|
49
|
+
/**
|
|
50
|
+
* Opt-in: the host paints the chat's background itself OUTSIDE this component (e.g. the agent's root shader).
|
|
51
|
+
* Keeps the `customBg` visual mode (top blur band) that passing `background` would give, but with
|
|
52
|
+
* no background node here and a transparent pane fill so the host's layer shows through.
|
|
53
|
+
*/
|
|
54
|
+
backgroundPaintedByHost?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* The setup progress stepper (today's only consumer: the agent chat), mounted as a DIRECT CHILD of this
|
|
57
|
+
* view's pane root — a `position: relative` box the size of the chat pane — and outside the scroll container,
|
|
58
|
+
* so it stays put while messages scroll under it. Mounted here rather than in the host's floating top bar for
|
|
59
|
+
* the same reason the top blur band is (see `.contentWrapper::before`): it has to track the chat content
|
|
60
|
+
* column, so it follows the pane when a canvas or a side panel contracts it, which a viewport-positioned
|
|
61
|
+
* overlay cannot — and that pane boundary exists only inside this view's split.
|
|
62
|
+
*
|
|
63
|
+
* The node brings its OWN positioning, stacking and query container (see the stepper's `.progressStepperRow`);
|
|
64
|
+
* this view contributes nothing but the positioned pane root it is mounted in.
|
|
65
|
+
*/
|
|
66
|
+
progressStepperSlot?: React.ReactNode;
|
|
67
|
+
/**
|
|
68
|
+
* Optional external ref to the scrollable content wrapper. Forwarded so
|
|
69
|
+
* callers can drive scroll-linked effects (e.g. an animated background
|
|
70
|
+
* that morphs with scroll position) without having to query the DOM.
|
|
71
|
+
*/
|
|
72
|
+
scrollRef?: React.Ref<HTMLDivElement>;
|
|
73
|
+
/**
|
|
74
|
+
* Bump to force a scroll to the newest message (via {@link scrollToLatestMessage}, so it clears any pinned turn and
|
|
75
|
+
* re-enables bottom-follow). Each distinct value triggers one scroll; the initial `0`/`undefined` is ignored. Used by
|
|
76
|
+
* the agent to follow the turn a widget/CTA-click signal starts (which posts no visible message of its own).
|
|
77
|
+
*/
|
|
78
|
+
scrollToBottomNonce?: number;
|
|
79
|
+
/**
|
|
80
|
+
* Optional external override of the internal bottom-follow flag. Provide it when the host runs its own programmatic
|
|
81
|
+
* scroll away from the bottom (e.g. the agent's search-result jump, which pages older messages in and scrolls to
|
|
82
|
+
* a message far above the bottom): the host sets it `false` for the jump so the resize/message-follow effects stop
|
|
83
|
+
* re-anchoring to the bottom and yanking the view back mid-jump. Left undefined, ConversationViewBody uses its own ref and
|
|
84
|
+
* behaves exactly as before. Shared with the AW-107 pin machinery, so both agree on one flag.
|
|
85
|
+
*/
|
|
86
|
+
followBottomRef?: React.MutableRefObject<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Optional "a programmatic jump is in flight" gate. Set by the host (the agent's search-result jump) for the duration of a
|
|
89
|
+
* jump. While true, the near-bottom onScroll handler does NOT re-enable bottom-follow and the resize ResizeObserver
|
|
90
|
+
* does NOT auto-scroll to the bottom — otherwise, right after the jump the container is still near the bottom, so
|
|
91
|
+
* onScroll would flip follow back on and the follow-up content-resize would yank the view back down. Left undefined,
|
|
92
|
+
* nothing is gated. Distinct from `followBottomRef`: that flag alone is clobbered by onScroll; this gate stops it.
|
|
93
|
+
*/
|
|
94
|
+
scrollJumpActiveRef?: React.MutableRefObject<boolean>;
|
|
95
|
+
/**
|
|
96
|
+
* Hide the assistant header (icon + name + "Assistant") and the copy button
|
|
97
|
+
* on assistant messages. Used by a host, which renders bare messages.
|
|
98
|
+
*/
|
|
99
|
+
hideAssistantMeta?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Theme for user-message bubbles, forwarded to ConversationMessageList. A host forces
|
|
102
|
+
* "dark"; when omitted the list falls back to its legacy light/default logic.
|
|
103
|
+
*/
|
|
104
|
+
userMessageTheme?: ConversationMessageUserTheme;
|
|
105
|
+
/**
|
|
106
|
+
* True when the host (the agent) is minimized to the compact side-panel; forwarded to ConversationViewBody.
|
|
107
|
+
*/
|
|
108
|
+
isCompact?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Opt-in (agent host only): confine the customBg top blur band to the chat pane instead of the whole viewport —
|
|
111
|
+
* active only while a sibling side panel is docked beside the chat, so the band compresses together with it instead
|
|
112
|
+
* of bleeding across the panel. See `.confineTopBlurBandToChatPane` below.
|
|
113
|
+
*/
|
|
114
|
+
confineTopBlurBandToChatPane?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Scroll-up older-message pagination (opt-in — mirrors the admin inspector). When `onLoadOlder` is provided, a top
|
|
117
|
+
* sentinel + IntersectionObserver (root = the scroll container) prefetches the next older page ~300px before the
|
|
118
|
+
* top, and the viewport is anchored across the prepend so it doesn't jump. `hasMoreOlder` gates the sentinel;
|
|
119
|
+
* `loadingOlder` shows a small loading row. Left undefined (the default) → no pagination, behaviour unchanged.
|
|
120
|
+
*/
|
|
121
|
+
hasMoreOlder?: boolean;
|
|
122
|
+
loadingOlder?: boolean;
|
|
123
|
+
onLoadOlder?: () => void;
|
|
124
|
+
/**
|
|
125
|
+
* Extra action controls rendered inside the chat input's action row, left of the send button —
|
|
126
|
+
* forwarded to ConversationMessageInput (e.g. the agent model picker pill).
|
|
127
|
+
*/
|
|
128
|
+
inputActionsSlot?: React.ReactNode;
|
|
129
|
+
/**
|
|
130
|
+
* Action controls pinned to the LEFT edge of the chat input's action row (`inputActionsSlot`
|
|
131
|
+
* stays right) — forwarded to ConversationMessageInput's `actionsSlotStart` (e.g. the agent "+" attachments menu).
|
|
132
|
+
*/
|
|
133
|
+
inputActionsSlotStart?: React.ReactNode;
|
|
134
|
+
/**
|
|
135
|
+
* Host-owned content rendered inside the chat input above its editable text area — attachment
|
|
136
|
+
* preview cards, validation error boxes. Forwarded to ConversationMessageInput's `topSlot`.
|
|
137
|
+
*/
|
|
138
|
+
inputTopSlot?: React.ReactNode;
|
|
139
|
+
/**
|
|
140
|
+
* Hard send gate for the chat input: blocks the send button AND Enter while true, but keeps the
|
|
141
|
+
* text editable. The host sets it e.g. while attachment uploads run.
|
|
142
|
+
*/
|
|
143
|
+
inputSendDisabled?: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Host-owned content rendered IN PLACE of the chat input — the closed-conversation bar of a completed
|
|
146
|
+
* setup conversation (no further input possible). When set, the body renders it instead of ConversationMessageInput,
|
|
147
|
+
* in a wrapper carrying the input's own width, bottom gap and stacking rule — so the node needs no layout of its
|
|
148
|
+
* own, and the background layer cannot paint over it.
|
|
149
|
+
*/
|
|
150
|
+
inputReplacementSlot?: React.ReactNode;
|
|
151
|
+
/**
|
|
152
|
+
* Host-owned band right above the chat input, the input overlapping its lower edge — e.g. the running voice chat
|
|
153
|
+
* with its controls. Not rendered while `inputReplacementSlot` replaces the input.
|
|
154
|
+
*/
|
|
155
|
+
inputBandSlot?: React.ReactNode;
|
|
156
|
+
/** The chat input's placeholder; the input's own default otherwise. */
|
|
157
|
+
inputPlaceholder?: string;
|
|
158
|
+
/** Forwarded to ConversationMessageInput's `sendReplacementWhenEmpty`. */
|
|
159
|
+
inputSendReplacementWhenEmpty?: React.ReactNode;
|
|
160
|
+
/** Forwarded to ConversationMessageInput's `glowUnderlay`. */
|
|
161
|
+
inputGlowUnderlay?: React.ReactNode;
|
|
162
|
+
/**
|
|
163
|
+
* Host-owned layer over the message column, the same size — e.g. the voice chat's focus mode. The message column
|
|
164
|
+
* stays mounted under it (scroll position and widget state kept); `isContentOverlayShown` switches between them.
|
|
165
|
+
*/
|
|
166
|
+
contentOverlaySlot?: React.ReactNode;
|
|
167
|
+
isContentOverlayShown?: boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Uploaded media-library images that ride along in `onSendMessage`'s options object (`attachments`) on the next
|
|
170
|
+
* send. Owned and cleared by the host; forwarded to ConversationMessageInput.
|
|
171
|
+
*/
|
|
172
|
+
outgoingAttachmentImages?: ConversationAttachmentReference[];
|
|
173
|
+
/**
|
|
174
|
+
* Imperative handle on the chat input (insertTextIntoInput) so host-owned controls — e.g. the
|
|
175
|
+
* "+" menu's "Generate image" entry — can put text into it. Forwarded to ConversationMessageInput's `apiRef`.
|
|
176
|
+
*/
|
|
177
|
+
conversationMessageInputApiRef?: React.Ref<ConversationMessageInputHandle>;
|
|
178
|
+
/**
|
|
179
|
+
* Keep the chat input editable and sendable while `aiThinking` is true (default false — the input locks for the
|
|
180
|
+
* whole turn); only the first post of a new conversation still locks it, while no conversation id exists yet. Opt
|
|
181
|
+
* in ONLY for a host whose post call stores the message and returns at once, and whose agent checks for unanswered
|
|
182
|
+
* messages when its turn ends, so a message sent mid-turn is answered in the next turn. A host whose post call
|
|
183
|
+
* generates the reply synchronously within the request has no such guard and must leave it off.
|
|
184
|
+
*/
|
|
185
|
+
allowSendWhileAiThinking?: boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Opt-in long-answer reading flow (AW-107), default false. When enabled:
|
|
188
|
+
* (1) on send, the question is pinned to the top with room reserved below it so the reply
|
|
189
|
+
* reveals from its beginning instead of chasing the bottom;
|
|
190
|
+
* (2) a scroll-to-latest-message button floats above the input while the bottom is out of view;
|
|
191
|
+
* (3) a fresh static reply's markdown blocks fade in staggered (useFreshMessageBlockReveal).
|
|
192
|
+
* Left off, the chat keeps the classic bottom-follow behavior — AI Extensions stays off;
|
|
193
|
+
* the agent chat opts in.
|
|
194
|
+
*/
|
|
195
|
+
enablePinQuestionAndRevealAnswer?: boolean;
|
|
196
|
+
/** New user messages are not sends (a voice chat saves the owner's spoken sentences): keep bottom-follow, no pin. */
|
|
197
|
+
isQuestionPinSuspended?: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Id of the ONE user message ConversationMessageList renders as a collapsed task-instruction disclosure instead of an
|
|
200
|
+
* owner bubble — the machine-composed seed instruction of a SCHEDULE-spawned run (UX overhaul W4 item 19).
|
|
201
|
+
* Undefined (every host except the agent chat) changes nothing.
|
|
202
|
+
*/
|
|
203
|
+
taskInstructionMessageId?: number;
|
|
204
|
+
/**
|
|
205
|
+
* Host content rendered right after one message of the thread, forwarded to ConversationMessageList (the agent chat's
|
|
206
|
+
* activity card under the message that started each turn). Undefined changes nothing.
|
|
207
|
+
*/
|
|
208
|
+
renderAfterMessage?: (message: ChatMessage) => React.ReactNode;
|
|
209
|
+
/** Forwarded to ConversationMessageList: a closed conversation renders no widget controls. */
|
|
210
|
+
isConversationClosed?: boolean;
|
|
211
|
+
onSuggestionClick: (text: string) => void;
|
|
212
|
+
onSendMessage: SendMessageHandler;
|
|
213
|
+
}
|
|
214
|
+
export declare const ConversationViewBody: (props: ConversationViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MutableRefObject, RefObject } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The pin-question-on-send machinery of the AW-107 long-answer reading flow, extracted out of ConversationViewBody
|
|
4
|
+
* so the addon lives in its own file (mirrors hooks/useIsMessagesBottomOutOfView.ts). On send, the user's
|
|
5
|
+
* question is pinned to the top with empty room reserved below it and bottom-follow is suspended for the turn,
|
|
6
|
+
* so the reply reveals from its beginning instead of chasing the bottom.
|
|
7
|
+
*
|
|
8
|
+
* Every method no-ops when `enabled` is false, so the disabled state can never leak a layout write
|
|
9
|
+
* (padding-bottom) or a scroll call even if a caller forgets a gate.
|
|
10
|
+
*/
|
|
11
|
+
export declare const usePinQuestionOnSend: (options: {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
scrollContainer: HTMLDivElement | null;
|
|
14
|
+
getMessagesListEl: () => HTMLElement | null;
|
|
15
|
+
messagesBottomRef: RefObject<HTMLDivElement | null>;
|
|
16
|
+
/** ConversationViewBody's followBottom ref — pinning suspends bottom-follow for the turn. */
|
|
17
|
+
followBottomRef: MutableRefObject<boolean>;
|
|
18
|
+
}) => {
|
|
19
|
+
pinLatestQuestionToTop: (behavior: ScrollBehavior) => boolean;
|
|
20
|
+
reserveRoomBelowPinnedQuestion: () => void;
|
|
21
|
+
isQuestionPinnedThisTurn: () => boolean;
|
|
22
|
+
endPinnedTurn: () => void;
|
|
23
|
+
userMessageRowCount: () => number;
|
|
24
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when an assistant message's stored content yields markdown that actually renders something.
|
|
3
|
+
*
|
|
4
|
+
* Not every ASSISTANT row carries text. An agentic run persists one ASSISTANT/TEXT turn per step, and a step
|
|
5
|
+
* that only called a tool stores `message: ""` (13 such turns in a 30-message run); a payload whose parts are
|
|
6
|
+
* all blank text likewise normalizes to "". Such a row would render an empty markdown container that still
|
|
7
|
+
* consumed a full `$x3` gap in the message list, so ConversationMessageList drops it instead — the per-turn agentic
|
|
8
|
+
* trace those rows carry is the admin console's job (AgentConversationInspector), not the customer chat's.
|
|
9
|
+
*
|
|
10
|
+
* The null/blank short-circuit also keeps normalizeServerMessageToMarkdown's "unrecognized message shape"
|
|
11
|
+
* console warning from firing on every one of those rows.
|
|
12
|
+
*/
|
|
13
|
+
export declare const assistantMessageHasRenderableMarkdown: (message: unknown) => boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The named assistant a chat can show (the assistant identity the host hands in) — the host application's older
|
|
3
|
+
* AI-Extensions chat passes a prompt extension here; the agent chat passes none. Only the fields the view reads.
|
|
4
|
+
*/
|
|
5
|
+
export interface ChatAssistantIdentity {
|
|
6
|
+
id?: number | null;
|
|
7
|
+
name?: string | null;
|
|
8
|
+
description?: string | null;
|
|
9
|
+
/** The name of the assistant's icon in the app's icon set. */
|
|
10
|
+
iconClass?: string | null;
|
|
11
|
+
}
|
|
12
|
+
/** The group the named assistant belongs to; its alias picks the chat's colour theme. */
|
|
13
|
+
export interface ChatAssistantCategory {
|
|
14
|
+
alias?: string | null;
|
|
15
|
+
name?: string | null;
|
|
16
|
+
}
|
|
17
|
+
/** An opening the named assistant suggests on its intro card. */
|
|
18
|
+
export interface ChatAssistantOpening {
|
|
19
|
+
name?: string | null;
|
|
20
|
+
description?: string | null;
|
|
21
|
+
iconClass?: string | null;
|
|
22
|
+
/** The text the opening sends when picked. */
|
|
23
|
+
openingText?: string | null;
|
|
24
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AgentsConversationMessage } from "../contract/conversation";
|
|
2
|
+
/**
|
|
3
|
+
* A message as the chat holds and renders it: a stored message of the conversation contract, or the owner's optimistic
|
|
4
|
+
* message before the server stored it (no id, no index yet), plus the chat store's `fresh` tag — the message arrived
|
|
5
|
+
* live, so its one-shot widgets may fire. Every contract field is optional here because the optimistic message carries
|
|
6
|
+
* only its text and role.
|
|
7
|
+
*/
|
|
8
|
+
export type ChatMessage = Partial<AgentsConversationMessage> & {
|
|
9
|
+
/** The message arrived live (not on open, not on a scroll-up page); its widgets are `justDelivered`. */
|
|
10
|
+
fresh?: boolean;
|
|
11
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { type ComponentType, type ReactNode, type RefObject } from "react";
|
|
2
|
+
import type { AgentsConversationClient } from "../../client/AgentsConversationClient";
|
|
3
|
+
import { type ConversationAttachmentReference } from "../../contract/conversation";
|
|
4
|
+
import type { AgentsChatStore } from "../store/create-agents-chat-store";
|
|
5
|
+
import type { ChatScrollTarget } from "./chat-scroll-target";
|
|
6
|
+
import { type ActivityTicker, type ActivityTickerTurn } from "./use-activity-ticker";
|
|
7
|
+
/** What the host's activity components get: the turn's state and the paced lines of the activity ticker. */
|
|
8
|
+
export interface AgentChatActivityProps {
|
|
9
|
+
/** A turn is in flight (derived from the messages and the run status). */
|
|
10
|
+
active: boolean;
|
|
11
|
+
/** The chat shows an error card. */
|
|
12
|
+
failed: boolean;
|
|
13
|
+
activityTicker: ActivityTicker;
|
|
14
|
+
/** The agent works on a task: a turn is in flight or the ticker still shows its lines. */
|
|
15
|
+
isAgentWorkingOnTask: boolean;
|
|
16
|
+
/** The key of the agent space the chat is open on. */
|
|
17
|
+
agentSpaceKey: number;
|
|
18
|
+
}
|
|
19
|
+
/** What the host's activity history under a message gets: the finished turn that message started, if any. */
|
|
20
|
+
export interface AgentChatActivityHistoryProps {
|
|
21
|
+
turn: ActivityTickerTurn | null;
|
|
22
|
+
}
|
|
23
|
+
/** Where the model of the next send comes from — read at send time (an admin's pick can change between renders). */
|
|
24
|
+
export interface AgentChatSendModelSource {
|
|
25
|
+
readModelForNextSend: () => string | undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface AgentChatControllerProps {
|
|
28
|
+
/** The state handle of this chat instance (created and released by the app). */
|
|
29
|
+
chatStore: AgentsChatStore;
|
|
30
|
+
/** The conversation client this chat reads and sends through. */
|
|
31
|
+
client: AgentsConversationClient;
|
|
32
|
+
/** The key of the agent space new conversations start in. */
|
|
33
|
+
agentSpaceKey: number;
|
|
34
|
+
/** When set, load + resume this existing conversation. Absent = empty chat, lazy-starts on first send. */
|
|
35
|
+
conversationId?: number;
|
|
36
|
+
onNewConversation?: (conversationId: number) => void;
|
|
37
|
+
/** The conversation could not be loaded (missing, deleted, not readable): the host drops to the empty chat. */
|
|
38
|
+
onConversationNotFound?: () => void;
|
|
39
|
+
/** Switch the active conversation — the ConversationSearchResults widget's open-arrow target. */
|
|
40
|
+
onOpenConversation?: (conversationId: number, messageId?: number) => void;
|
|
41
|
+
/** Switch this chat to another conversation of the same agent space in place (a widget linking to related work). */
|
|
42
|
+
onSwitchConversation?: (conversationId: number) => void;
|
|
43
|
+
/** Text inserted into the composer once on mount — never sent automatically. */
|
|
44
|
+
initialComposerPrompt?: string;
|
|
45
|
+
/** A request to scroll a message into view and flash it; re-applied whenever its `nonce` changes. */
|
|
46
|
+
scrollTarget?: ChatScrollTarget;
|
|
47
|
+
/** Each finished turn's activity lines stay in the thread above its answer (rendered by `ActivityHistory`). */
|
|
48
|
+
keepActivityHistoryAfterAnswer?: boolean;
|
|
49
|
+
/** The host shows one conversation the owner may not leave: no starting ideas (the agent speaks first). */
|
|
50
|
+
isPinnedToSingleConversation?: boolean;
|
|
51
|
+
/** App extension of the widget context: the chat is the app's guided first-run setup. */
|
|
52
|
+
isOnboardingSetupConversation?: boolean;
|
|
53
|
+
/** The model of the next send; without it the conversation's own model drives. */
|
|
54
|
+
sendModelSource?: AgentChatSendModelSource;
|
|
55
|
+
/** Called after a send that carried attachments, so the host clears them from the composer. */
|
|
56
|
+
onAttachmentsSent?: () => void;
|
|
57
|
+
/** The empty state of a new chat: a synthetic first assistant message (client state only), as markdown. */
|
|
58
|
+
startingIdeasMarkdown?: string;
|
|
59
|
+
/** While true the chat follows the bottom; a rising edge jumps to the newest message (a voice chat). */
|
|
60
|
+
followBottom?: boolean;
|
|
61
|
+
/** The chat's scroll container (the host may own it, e.g. for a scroll-linked background). */
|
|
62
|
+
chatScrollRef: RefObject<HTMLDivElement | null>;
|
|
63
|
+
isCompact?: boolean;
|
|
64
|
+
confineTopBlurBandToChatPane?: boolean;
|
|
65
|
+
/** Class names of the two wrappers around the conversation view (the host's layout). */
|
|
66
|
+
chatAreaClassName?: string;
|
|
67
|
+
chatWrapClassName?: string;
|
|
68
|
+
/** Slots of the conversation view. */
|
|
69
|
+
progressStepperSlot?: ReactNode;
|
|
70
|
+
inputActionsSlot?: ReactNode;
|
|
71
|
+
inputTopSlot?: ReactNode;
|
|
72
|
+
inputSendDisabled?: boolean;
|
|
73
|
+
inputReplacementSlot?: ReactNode;
|
|
74
|
+
inputBandSlot?: ReactNode;
|
|
75
|
+
inputPlaceholder?: string;
|
|
76
|
+
inputSendReplacementWhenEmpty?: ReactNode;
|
|
77
|
+
inputGlowUnderlay?: ReactNode;
|
|
78
|
+
isContentOverlayShown?: boolean;
|
|
79
|
+
isQuestionPinSuspended?: boolean;
|
|
80
|
+
/** The attachments that ride along on the next send. */
|
|
81
|
+
outgoingAttachments?: ConversationAttachmentReference[];
|
|
82
|
+
/** The agent's activity at the tail of the thread (the agent avatar slot). */
|
|
83
|
+
ThinkingIndicator: ComponentType<AgentChatActivityProps>;
|
|
84
|
+
/** A layer over the message column (a voice chat's focus mode); shown while `isContentOverlayShown`. */
|
|
85
|
+
ContentOverlay?: ComponentType<AgentChatActivityProps>;
|
|
86
|
+
/** The kept activity lines under the message that started a turn (with `keepActivityHistoryAfterAnswer`). */
|
|
87
|
+
ActivityHistory?: ComponentType<AgentChatActivityHistoryProps>;
|
|
88
|
+
/** Rendered inside the chat's widget provider (the host's canvas syncs). */
|
|
89
|
+
children?: ReactNode;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The agent chat: the controller over the conversation client port and the chat store — open, pages,
|
|
93
|
+
* live updates, sends, signals, the error card and retry, the opening request, the deep-linked widget, the scroll jump
|
|
94
|
+
* and the activity — rendering the conversation view with the host's slots. The drive is async: a reply never comes
|
|
95
|
+
* in the start/post answer, it arrives through the live updates.
|
|
96
|
+
*/
|
|
97
|
+
export declare const AgentChatController: (props: AgentChatControllerProps) => import("react/jsx-runtime").JSX.Element;
|